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
相关产品推荐
相关产品推荐

