【问题标题】:nested foreach loop in PHP 5PHP 5 中的嵌套 foreach 循环
【发布时间】:2026-01-06 18:25:01
【问题描述】:

所以这是交易:

我有一个数组,其中包含智能手机的制造商名称和一个 XML 文件,其中包含每个特定手机的规格。

我要做的是根据制造商对手机进行分组。我正在使用嵌套的 FOREACH 循环来执行此操作。这是我的代码:

    foreach ($makes as $manufacturer){
        echo '<div>'.'<h2>'.$manufacturer.'</h2>'.'<hr>';
        foreach ($xml as $item){
            if($item->make == $manufacturer){
                $src = $item->thumb;
                echo '<div>'."<img src='$src' width='100'/>".'<h1>'.
                        $item->make.' '.$item->model.'</h1>'.'</div>';
            }
         }  
         echo '</div>';
     }

这种方法的问题在于,出于某种原因,我的页面只显示每个制造商的第一部手机,而不是查看每个型号。

我在这里做错了什么?

这是 XML 示例:

<?xml version="1.0" encoding="utf-8"?>
<items>
    <item>
       <make></make>
       <model></model>
       <thumb></thumb>
    </item>
</items>

此外,如果我删除外循环,代码可以完美运行并显示 XML 中的每个电话

【问题讨论】:

  • 如果数据在数据库中会容易得多
  • 发布一个 XML 示例。 $xml 里面是什么,是内循环的主题?

标签: php xml-parsing foreach simplexml php-5.2


【解决方案1】:

你有一个错字:

echo '<div>'."<img src='$src' width='100'/>".'<h1>'.
$item->make.' '.$item->model.'</h1>'.

应该是

echo '<div>'."<img src='$src' width='100'/>".'<h1>'.
$item->make.' '.$item->model.'</h1>';

注意“;”在回声结束时。

【讨论】:

  • 这不是错字。还有另一个
    结束标记。它就在下一行,我忘了复制它