
本文介绍了如何使用 PHP 递归地在多维数组中,如果存在特定键(例如 'banana'),则插入新的键值对(例如 'apple' => 'red')。通过自定义函数 `ins_value_to_arr`,可以遍历数组的每个元素,并在包含目标键的同级数组中插入新的键值对。
在处理复杂的数据结构时,经常需要在多维数组的特定位置插入新的键值对。如果数组的结构是固定的,这很容易实现。但是,如果数组是多维的,并且嵌套的深度不确定,那么就需要使用递归的方法来解决这个问题。
以下是一个示例函数,它可以在多维数组中递归地查找特定的键,并在找到该键的同级数组中插入新的键值对:
function ins_value_to_arr(&$arr, $insVal = [] , $sibling = NULL){
static $ins;
static $sib;
if($insVal){
$ins = $insVal;
$sib = $sibling;
}
$merge = false;
foreach($arr as $k => &$val){
if(is_array($val)){
ins_value_to_arr($val);
}
if($k == $sib){
$merge = true;
}
}
if($merge){
$arr = array_merge($arr,$ins);
}
return $arr;
}代码解释:
立即学习“PHP免费学习笔记(深入)”;
函数签名: ins_value_to_arr(&$arr, $insVal = [] , $sibling = NULL)
静态变量: static $ins; static $sib;
初始化静态变量:
if($insVal){
$ins = $insVal;
$sib = $sibling;
}遍历数组: foreach($arr as $k =youjiankuohaophpcn &$val)
递归调用: if(is_array($val)){ ins_value_to_arr($val); }
检查兄弟键: if($k == $sib){ $merge = true; }
合并数组: if($merge){ $arr = array_merge($arr,$ins); }
返回数组: return $arr;
使用示例:
$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',
],
];
ins_value_to_arr($original,['apple' => 'red'],'banana');
print_r($original);输出结果:
Array
(
[0] => Array
(
[something1] => something
[banana] => yellow
[apple] => red
[something2] => Array
(
[something3] => something
[something4] => Array
(
[something5] => something
[banana] => yellow
[apple] => red
[something6] => Array
(
[banana] => yellow
[apple] => red
)
)
[banana] => yellow
[apple] => red
)
[something7] => Array
(
[0] => Array
(
[something8] => something
[banana] => yellow
[apple] => red
)
)
)
[1] => Array
(
[something9] => something
[banana] => yellow
[apple] => red
)
[2] => Array
(
[something10] => something
)
)注意事项:
总结:
通过使用递归函数,可以方便地在多维数组中查找特定的键,并在找到该键的同级数组中插入新的键值对。 这在处理复杂的数据结构时非常有用。 理解递归的原理和 array_merge 函数的行为是编写高效和可靠的代码的关键。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号