在另一个关联数组中使用PHP关联数组以显示分组数据

问题描述 投票:0回答:1

我在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 arrays associative-array
1个回答
0
投票
<?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变量。

© www.soinside.com 2019 - 2024. All rights reserved.