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

PHP多维数组递归向含banana键的同级插入apple键值对

实现方案

我们可以通过递归遍历数组的方式实现需求,核心逻辑是先递归处理当前数组的所有子元素,再检查当前层级是否存在banana键,存在则追加apple => red键值对。

完整代码实现

function insertAppleWhereBananaExists(array &$array): void
{
    // 先递归处理所有子数组
    foreach ($array as $key => &$value) {
        if (is_array($value)) {
            insertAppleWhereBananaExists($value);
        }
    }
    // 处理完子层级后检查当前层级是否有banana键
    if (array_key_exists('banana', $array)) {
        $array['apple'] = 'red';
    }
}

// 测试调用
$original = [
    0 => [
        'something1' => 'something',
        'banana' => 'yellow',
        'something2' => [
            'something3' => 'something',
            'something4' => [
                'something5' => 'something',
                'banana' => 'yellow',
                'something6' => [
                    'banana' => 'yellow',
                ]
            ],
            'banana' => 'yellow',
        ],
        'something7' => [
            0 => [
                'something8' => 'something',
                'banana' => 'yellow',
            ],
        ],
    ],
    1 => [
        'something9' => 'something',
        'banana' => 'yellow',
    ],
    2 => [
        'something10' => 'something',
    ],
];

insertAppleWhereBananaExists($original);
// 输出结果和你给出的预期结构完全一致
print_r($original);

代码说明

  • 采用引用传参&$array、&$value,直接修改原数组,避免大数组场景下的额外内存开销
  • 优先处理子层级数组,保证所有嵌套深度的数组都能被正确检查
  • 使用array_key_exists检测banana键,比isset逻辑更严谨,即便banana对应的值为null也能正常识别
  • 追加的apple键值对默认放在当前数组末尾,符合“不需要紧邻banana、仅需同层级”的要求

内容的提问来源于stack exchange,提问作者senectus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:15:05