如何循环相同id的数据,而不使用foreach重复显示id


How to loop data for the same id without showing the id repeatedly using foreach?


我正在尝试显示与汽车id相关的租赁金额和天数。我首先为用户点击的car Make显示车名。

显示汽车名称时,必须同时显示租车天数和租车金额。但是,由于我在后端存储了三次汽车id的天数和金额,因此它在前端也循环了三次。

让它更清晰:

//后端我多次存储一辆车的天数和金额,而不是一次
carName 数量
Carname1 1 50
Carname1 7 650
Carname1 30 2000

我像这样调用carName,gallery,rental_days和rental_amount:

     if(isset($q))
{
mysql_select_db($database);
/*$query_showmake="SELECT carName FROM car_name WHERE carMake_id='$q'";*/
$query_showmake="SELECT rental.rental_days,rental.rental_amount,rental.carName_id,car_name.carName_id,car_name.carName,car_name.carMake_id,gallery,gallery_id,gallery.gallery,gallery.carName_id,car_make.carMake_id  FROM rental,car_name,gallery,car_make WHERE car_name.carName_id=gallery.carName_id AND car_name.carMake_id='$q' AND car_name.carMake_id=car_make.carMake_id AND rental.carName_id=car_name.carName_id ORDER BY rental_days ASC";
$result_showmake=mysql_query($query_showmake)or die(mysql_error());
while($row_showmake=mysql_fetch_array($result_showmake))
{
$carMake_show=$row_showmake['carName'];
$carmake[$row['carName_id']][]=$row_showmake;
/* echo $carMake_show.'<br/>';*/

}
?>
<table border="0" style="border-collapse:collapse">
<?php
foreach($carmake as $make=>$name)
{
foreach($name as $n)
{
echo "<tr>";
echo "<td class='carname'>".$n{'carName'}.'</td><td rowspan="2" valign="top" class="cardetail">Car Details</td></tr>';
/*echo $n{'carMake_id'}.'<br/>';
echo $n{'gallery'}.'<br/>';*/
echo"<tr><td class='img'><img src='management/uploads/{$n['carMake_id']}/{$n['gallery']}' width='400' height='200'>";
echo "</td></tr>";
echo"<tr><td colspan='2' class='days'>Days : ";
$days[]=$n['rental_days'];
foreach($days as $day)
{
echo $day."&nbsp;";
}
echo "</td></tr>";
echo"<tr><td colspan='2' class='days'>Amount : ";
$amount[]=$n['rental_amount'];
foreach($amount as $amt)
{
echo "RM ".$amt."&nbsp;";
}
echo "</td></tr>";
echo"<tr><td height='50' colspan='2'></td></tr>";
}
}?>
</table>
<?php
}

结果如下:

carName 1
图1
天1
量50

carName 1
图1
天7
数量650

carName 1
图1
30天
数量2000

AND我想显示如下:

carname 1
天:1,,7,,30
am50  650 2000年

在主取循环堆栈中,您希望在索引数组中显示的值如下

while($row = mysql_fetch_array($result_showmake)) {
    $carmake[$row['carName_id']]['amounts'][] = $row['rental_amount'];
    $carmake[$row['carName_id']]['days'][] = $row['rental_days'];
    $carmake[$row['carName_id']]['images'][] = $row['gallery'];
}

然后使用 implode 将堆叠值呈现为空格分隔的字符串

foreach($carmake as $id => $make) {
    print "carName $id'n"
         . "images " . implode(' ', $make['images']) . "'n"
         . "days " . implode(' ', $make['days']) . "'n"
         . "amounts " . implode(' ', $make['amounts']) . "'n";
}

顺便说一句,你不应该使用mysql_*函数,因为它们已经被弃用了。考虑搬到 mysqli PDO