PHP如何通过索引正确获取数组中指定位置的rating字段值
报错原因
你写的[0]['rating']、[1]['rating']没有绑定任何数据源,属于未指定数组变量的空数组写法,PHP无法识别你要从哪个数组中提取数据,因此触发Undefined index报错。
正确实现方案
根据你是否需要保留循环逻辑,可选择对应写法:
不需要循环、直接取固定索引值
你的method本身就是从0开始的数字索引数组,无需套foreach循环,直接指定完整数组路径取值即可:// 获取索引0位置的rating echo $res['method'][0]['rating']; // 输出936.6 // 获取索引1位置的rating echo $res['method'][1]['rating']; // 输出332生产环境建议搭配
isset()做存在性判断,避免对应索引不存在时抛出报错,示例:echo isset($res['method'][0]['rating']) ? $res['method'][0]['rating'] : '默认值';需要保留foreach循环逻辑
如果业务要求必须在循环内取值,有两种常用写法:- 直接写完整数组路径读取指定索引的值,和循环外的取值逻辑一致:
<?php foreach($res['method'] as $key=>$row) { ?> 索引0的rating:<?php echo $res['method'][0]['rating']; ?> 索引1的rating:<?php echo $res['method'][1]['rating']; ?> 当前循环项的rating:<?php echo $row['rating']; ?> <?php } ?> - 利用循环自带的
$key变量(即当前遍历项的索引值)做判断,匹配到目标索引时输出对应值:<?php foreach($res['method'] as $key=>$row) { ?> <?php if($key == 0) { ?> 第一个位置的rating:<?php echo $row['rating']; ?> <?php } ?> <?php if($key == 1) { ?> 第二个位置的rating:<?php echo $row['rating']; ?> <?php } ?> <?php } ?>
- 直接写完整数组路径读取指定索引的值,和循环外的取值逻辑一致:
内容的提问来源于stack exchange,提问作者hellows
相关产品推荐
相关产品推荐

