PHP数组仅在键上递归(多维)差异
我想提取一个数组,比较两个多维数组的结构和键 例如:PHP数组仅在键上递归(多维)差异,php,arrays,Php,Arrays,我想提取一个数组,比较两个多维数组的结构和键 例如: <?php $array_1 = ['abc'=> '', 'def'=> ['', '', [ 'ijk' => ''] ] ]; $array_2 = ['abc'=> '', 'def'=> ['', '', [ 'ijK' => ''] ] ]; 我想要一个数组diff,告诉我键'ijK'与第一个数组中的'ijK'不相同或不存
<?php
$array_1 =
['abc'=> '',
'def'=> ['', '', [
'ijk' => '']
]
];
$array_2 =
['abc'=> '',
'def'=> ['', '', [
'ijK' => '']
]
];
我想要一个数组diff,告诉我键'ijK'与第一个数组中的'ijK'不相同或不存在
只有键对我来说很重要。值总是空的。如果键ijK出现在另一个级别的第一个数组上?如果键ijK出现在另一个级别的第一个数组上?
function array_key_recursive_compare($array1, $array2) {
$diff = false;
// Left-to-right
foreach ($array1 as $key => $value) {
if (!array_key_exists($key,$array2)) {
$diff[0][$key] = $value;
} elseif (is_array($value)) {
if (!is_array($array2[$key])) {
$diff[0][$key] = $value;
$diff[1][$key] = $array2[$key];
} else {
$new = array_compare($value, $array2[$key]);
if ($new !== false) {
if (isset($new[0]))
$diff[0][$key] = $new[0];
if (isset($new[1]))
$diff[1][$key] = $new[1];
};
};
} elseif ($array2[$key] !== $value) {
$diff[0][$key] = $value;
$diff[1][$key] = $array2[$key];
};
};
// Right-to-left
foreach ($array2 as $key => $value) {
if (!array_key_exists($key,$array1)) {
$diff[1][$key] = $value;
}
// No direct comparison because matching keys were compared in the
// left-to-right loop earlier, recursively.
}
return $diff;
}