You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP中遍历JSON多对象数组并实现表格两次循环展示?

我明白你的问题了——你的JSON数组里是两个结构完全不同的对象,直接用同一个循环遍历所有字段肯定会触发未定义字段的警告,因为第一个对象没有pelast4q和amount,第二个对象没有newdate、closerate这些字段。

要实现两次循环分别处理这两组数据,你可以把数组拆分成两个独立的部分,分别遍历处理对应的字段。下面是具体的代码实现:

方案代码

// 先解析JSON字符串为PHP数组(假设你已经完成这一步)
$data = json_decode($yourJsonString, true);

echo "<table>";

// 第一次循环:处理第一组数据(价格、市值、股份相关字段)
foreach (array_slice($data, 0, 1) as $nt) {
    echo "<tr class='table_row_grey'>
            <td><strong>Price Date</strong></td>
            <td>{$nt['newdate']}</td>
          </tr>";
    echo "<tr class='table_row_white'>
            <td><strong>Close Price</strong></td>
            <td>PKR</td>
            <td>" . number_format($nt['closerate'], 2) . "</td>
          </tr>";
    echo "<tr class='table_row_grey'>
            <td><strong>Shares</strong></td>
            <td>Mn</td>
            <td>" . number_format($nt['out_share'], 2) . "</td>
          </tr>";
    echo "<tr class='table_row_white'>
            <td><strong>M.Cap</strong></td>
            <td>PKR Mn</td>
            <td>" . number_format($nt['mcap'], 0) . "</td>
          </tr>";
}

// 第二次循环:处理第二组数据(P/E、Amount字段)
foreach (array_slice($data, 1, 1) as $nt) {
    echo "<tr class='table_row_grey'>
            <td><strong>P/E</strong></td>
            <td>Trailing (4Q)</td>
            <td>" . number_format($nt['pelast4q'], 2) . "</td>
          </tr>";
    // 新增Amount字段的展示(如果需要的话)
    echo "<tr class='table_row_white'>
            <td><strong>Amount</strong></td>
            <td>PKR</td>
            <td>" . number_format($nt['amount'], 2) . "</td>
          </tr>";
}

echo "</table>";

代码说明

  1. array_slice的作用:用这个函数分别截取JSON数组的第一个元素(索引0)和第二个元素(索引1),把两个结构不同的对象拆分开,避免交叉访问不存在的字段。
  2. 两次独立循环:第一次循环只处理第一组的价格、市值等字段,第二次循环只处理第二组的P/E和Amount字段,彻底解决字段未定义的问题。
  3. 可选优化:如果你的JSON数组未来可能有更多同结构的对象,也可以根据字段是否存在来判断(比如用isset($nt['newdate'])),但针对当前只有两个对象的场景,拆分循环的方式更直接清晰。

内容的提问来源于stack exchange,提问作者faizan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:51:36