如何修复PHP代码中的'Trying to access array offset on value of type bool'错误?
问题分析与解决
错误原因
这个通知错误的含义是:你试图对一个布尔类型(bool)的值使用数组偏移(即['value']这种数组取值写法),但布尔值并非数组,因此无法执行该操作。
回到你的代码,问题出在$val = get_field_object($field['name'], $id);这一行——当get_field_object找不到对应字段时,会返回布尔值false,而你直接将$val当作数组去读取['value'],就触发了这个错误。
修复方案
你需要先判断$val是否为有效数组,再去访问它的value键。修改后的代码如下:
foreach($ids as $id){ if (stripos($field['name'], 'label_') !== FALSE) { echo ''; } else{ $val = get_field_object($field['name'], $id); // 先验证$val是数组且存在value键 if (is_array($val) && isset($val['value'])) { echo '<td>'.generate_view($field['name'], $val['value']).'</td>'; } else { // 字段不存在时的兜底处理,比如输出空单元格 echo '<td></td>'; } } }
额外说明
is_array($val):确保$val是数组类型,而非布尔值falseisset($val['value']):确保数组中确实存在value键,避免触发“未定义数组索引”的新错误- 兜底的
echo '<td></td>'可根据需求调整,比如输出提示文本或其他默认内容
内容的提问来源于stack exchange,提问作者Dennis van Gageldonk
相关产品推荐
相关产品推荐

