You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 14:36:00