【发布时间】:2022-08-17 23:07:28
【问题描述】:
我有两个这样的数组。
$array_1 = array(
\'array_key\' => array(
\'array_key_1\' => 1,
\'array_key_2\' => 2,
\'array_key_3\' => 3,
),
);
$array_2 = array(
\'array_key\' => array(
\'array_key_1\' => null,
\'array_key_2\' => null,
\'array_key_3\' => null,
\'array_key_4\' => null,
\'array_key_5\' => null,
),
);
我想创建一个函数来从这些数组中创建一个新数组,并辅以一个键不存在的数组。
$array_true = array(
\'array_key\' => array(
\'array_key_1\' => 1,
\'array_key_2\' => 2,
\'array_key_3\' => 3,
\'array_key_4\' => null,
\'array_key_5\' => null
),
);
我已经为 array_merge 创建了自己的函数,但它不支持递归,所以如果有更好的编写方法,我将不胜感激。
$array_1 = array(
\'array_key\' => array(
\'array_key_1\' => 1,
\'array_key_2\' => 2,
\'array_key_3\' => 3,
),
);
$array_2 = array(
\'array_key\' => array(
\'array_key_1\' => null,
\'array_key_2\' => null,
\'array_key_3\' => null,
\'array_key_4\' => null,
\'array_key_5\' => null,
),
);
// Ultimately, I would like to create such a function.
$array_true = array(
\'array_key\' => array(
\'array_key_1\' => 1,
\'array_key_2\' => 2,
\'array_key_3\' => 3,
\'array_key_4\' => null,
\'array_key_5\' => null
),
);
function my_merge_func($array_1,$array_2) {
$merged = array();
foreach ($array_2 as $key => $value) {
if (empty($array_1[ $key ])) {
$merged[ $key ] = $value;
} else {
if (is_array($value)) {
// my_merge_func($array_1,$value);
// I want to make it a recursive process since similar processing continues from here.
foreach ($value as $key_1 => $value_1) {
if (empty($array_1[ $key ][ $key_1 ])) {
$merged[ $key ][ $key_1 ] = $value_1;
} else {
if (is_array($value_1)) {
foreach ($value_1 as $key_2 => $value_2) {
$merged[ $key ][ $key_1 ][ $key_2 ] = $value_2;
}
} else {
$merged[ $key ][ $key_1 ] = $array_1[ $key ][ $key_1 ];
}
}
}
} else {
$merged[ $key ] = $array_1[ $key ];
}
}
}
return $merged;
};
var_dump(my_merge_func($array_1,$array_2));
var_dump($array_true);
var_dump(my_merge_func($array_1,$array_2) === $array_true);
标签: php