我在php中有两个关联数组,$ cars和$ manufacturers,如果ID匹配,我想将它们“分组”在一起。如果未将汽车分配给制造商,则应在其自己的容器中列出该汽车。
<?php foreach ($this->items['cars'] as $i => $car) :?>
<?php foreach ($this->items['manufacturers'] as $manufacturer) :?>
<div class="container">
<?php echo 'ID: ' . $car->id . ' - ' . $car->title;?>
<div>
<?php endforeach;?>
<?php endforeach;?>
这个想法是,<div class="container">
将包含所有制造商的汽车数据,但这仅打印分配给制造商的汽车。
作为示例,我需要这样输出:
<div class="container">
ID: 1 - Golf
ID: 4 - Passat
ID: 5 - Toureg
</div>
<div class="container">
ID: 2 - Focus
ID: 6 - Galaxy
</div>
<div class="container">
ID: 3 - Jazz
</div>
Edit我已经更新了上面的代码;问题似乎出在没有将汽车分配给制造商的时候,因为我正在汽车循环内遍历制造商。我不确定如何实现所需的输出。
有人可以建议最好的解决方案吗?谢谢!
<?php
foreach ($this->items['manufacturers'] as $manufacturer){
echo "<div class="container">";
foreach ($this->items['cars'] as $i => &$car){
if($manufacturer->id === $car->manufacturerId){
echo 'ID: ' . $car->id . ' - ' . $car->title;
$car->manufacturerFound = true;
}
}
echo "<div>";
}
foreach ($this->items['cars'] as $i => $car){
if(property_exists($car, manufacturerFound) && $car->manufacturerFound !== true){
echo 'ID: ' . $car->id . ' - ' . $car->title;
}
}
?>
原始代码没有if / else命令,所以我假定了ManufacturerId变量。