PHP动态多维数组无法正确获取数据的技术求助
问题分析与解决方案
你遇到的问题核心很清晰:你创建的二级数组是关联数组(用col1、col2作为自定义键名),但循环访问时却误用了数字索引[0]和[1],这自然取不到正确的值,甚至会让PHP输出Array(如果错误提示级别未开启,尝试访问不存在的数组元素就会出现这个默认输出)。
修正后的循环代码
直接把数字索引替换成你定义的关联键名就能解决问题:
for($i = 0; $i < count($groups); ++$i) { for($j = 0; $j < count($$groups[$i]); ++$j) { echo $$groups[$i][$j]['col1'] . " - " . $$groups[$i][$j]['col2'] . "<br>"; } }
更优雅的写法(推荐)
用foreach循环会更直观,还能避免count()在循环中重复计算的性能问题,代码可读性也更高:
foreach ($groups as $groupName) { // 用${$groupName}代替$$groupName,写法更清晰易懂 foreach (${$groupName} as $item) { echo $item['col1'] . " - " . $item['col2'] . "<br>"; } }
为什么var_dump能看到数据?
因为var_dump会完整输出数组的所有结构,包括关联键和对应的值,所以你能确认数据确实存在,但关联数组的键不是默认的数字序列,必须用你定义的字符串键名col1、col2才能正确访问对应内容。
内容的提问来源于stack exchange,提问作者fishmong3r
相关产品推荐
相关产品推荐

