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

解析REST API返回的JSON数组时foreach循环赋值变量仅获单一值的问题排查

问题分析与解决办法

嗨,我来帮你搞定这个问题~

你遇到的核心问题很简单:每次循环时你都用新的主队名称覆盖了单个变量$prova,所以最后只保留了最后一个元素的值。因为$prova是一个普通变量,不是数组,没办法存储多个值。

正确的做法:用数组存储所有值

你需要先把$prova初始化为一个空数组,然后在循环里把每个主队名称追加到数组里,这样就能保存所有值了:

// 先初始化一个空数组
$prova = []; 
foreach ($response as $key1 => $value1){ 
    // 把每个主队名称追加到数组末尾,这里直接用$value1更简洁
    $prova[] = $value1['home']; 
} 

现在$prova就是包含所有主队名称的数组了,比如['FC Den Bosch', 'Nashville SC', ...](根据你的实际数据)。

在HTML表格中调用这些值

如果要把这些值放到HTML表格里,你可以循环这个数组:

<table border="1">
    <thead>
        <tr>
            <th>主队名称</th>
        </tr>
    </thead>
    <tbody>
        <?php foreach ($prova as $homeTeam): ?>
            <tr>
                <td><?php echo $homeTeam; ?></td>
            </tr>
        <?php endforeach; ?>
    </tbody>
</table>

更高效的方式:直接循环原始数组

其实你也不用单独存一个$prova数组,直接在HTML里循环原始的$response数组,还能同时获取其他字段(比如客队、联赛等):

<table border="1">
    <thead>
        <tr>
            <th>主队</th>
            <th>客队</th>
            <th>联赛</th>
        </tr>
    </thead>
    <tbody>
        <?php foreach ($response as $match): ?>
            <tr>
                <td><?php echo $match['home']; ?></td>
                <td><?php echo $match['away']; ?></td>
                <td><?php echo $match['leagues']; ?></td>
            </tr>
        <?php endforeach; ?>
    </tbody>
</table>

小提示

循环里直接用$value1(或者例子里的$match)比$response[$key1]更清晰,也更高效,因为foreach已经帮你把当前元素的值取出来了~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 14:42:37