PHP多维关联数组遍历问题:生成指定格式的数组调用代码
问题描述
我有一个存储父页面及其对应子页面位置编号的多维关联数组,想要通过动态遍历数组,批量生成指定格式的$submenu数组调用代码。尝试嵌套foreach循环未得到预期结果,误以为外层循环的$parent变量在内层循环中不可访问;尝试合并数组的方法也失败,现寻求正确的实现方案。
原代码示例:
$page = array( "content" => array(0, 3, 1, 2), "users" => array(17, 5, 16), "settings" => array(5, 15, 10) ); foreach ($page as $parent => $ary){ foreach ($ary as $position){ $return = $submenu[$parent][$position]; } }
预期输出:
$submenu['content'][0]; $submenu['content'][3]; $submenu['content'][1]; $submenu['content'][2]; $submenu['users'][17]; $submenu['users'][5]; $submenu['users'][16]; $submenu['settings'][5]; $submenu['settings'][15]; $submenu['settings'][10];
解决方案
你的核心问题在于之前的代码只是将每次循环的结果赋值给$return,导致最终只保留了最后一次循环的结果,而且没有生成字符串形式的目标代码。另外,外层循环的$parent变量在内层循环中是完全可以正常访问的,之前的误解并不成立。
正确的实现方式是在每次内层循环中拼接出需要的代码字符串,将所有行收集起来后统一输出:
$page = array( "content" => array(0, 3, 1, 2), "users" => array(17, 5, 16), "settings" => array(5, 15, 10) ); // 用于存储生成的每一行代码 $outputLines = []; foreach ($page as $parent => $positions) { foreach ($positions as $position) { // 拼接符合要求的代码字符串 $outputLines[] = "\$submenu['{$parent}'][{$position}];"; } } // 输出所有生成的代码,每行一个 echo implode("\n", $outputLines);
运行这段代码后,就能得到你想要的预期输出。
内容的提问来源于stack exchange,提问作者CBR600grl
相关产品推荐
相关产品推荐

