PHP遍历嵌套数组报Illegal string offset 'pakket'错误怎么解决?
错误原因
- 你写的外层foreach会遍历顶层数组的每一个元素,而顶层数组里大部分元素(比如
naam、email、phone等)的值都是字符串类型,不是数组。当循环到这些字符串元素时,尝试用$element['pakket']获取字符串的pakket下标,PHP不支持字符串使用字符串作为偏移量取值,因此触发了Illegal string offset 'pakket'警告。 - 逻辑上也不需要遍历整个顶层数组,
pakket是顶层数组的直接子键,直接读取即可,不需要循环所有顶层元素。
修复后的代码
直接输出你要的结果的代码如下:
foreach ($array['pakket'] as $index => $pakketItem) { echo "Pakket {$index}:\n"; echo $pakketItem['pakket_type'] . "\n\n"; }
如果需要避免pakket键不存在或者不是数组的场景下报错,可以增加前置判断:
if (isset($array['pakket']) && is_array($array['pakket'])) { foreach ($array['pakket'] as $index => $pakketItem) { echo "Pakket {$index}:\n"; echo $pakketItem['pakket_type'] . "\n\n"; } }
内容的提问来源于stack exchange,提问作者Jari Rengeling
相关产品推荐
相关产品推荐

