解析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
相关产品推荐
相关产品推荐

