PHP에서 array_diff_assoc () 함수는 두 개 이상의 배열의 차이, 다른 배열에 있지 않은 첫 번째 배열의 리턴 요소의 차이를 비교하고 키 이름과 값을 비교하는 데 사용됩니다. 이것은 매우 편리한 기능이며, 특히 1 차원 어레이의 비교에 적합합니다.
그러나 다차원 배열에 적용하면 상황이 조금 더 복잡해집니다. 이 기사는 다차원 배열로 Array_diff_assoc () 의 적용을 탐색하고 복잡한 상황을 처리하는 방법에 대한 제안을 제공합니다.
Array_Diff_Assoc () 함수는 두 배열의 키 이름과 키 값을 비교하는 데 사용됩니다. 키 이름과 값이 첫 번째 배열에 존재하지만 다른 배열에는 존재하지 않거나 존재하지만 다른 경우 요소가 반환됩니다.
문법:
array_diff_assoc(array $array1, array $array2, array ...$arrays): array
Array1 : 첫 번째 배열.
Array2 : 여러 배열을 비교할 수있는 두 번째 배열.
차이가 포함 된 배열을 반환합니다.
$array1 = [
"a" => "apple",
"b" => "banana",
"c" => "cherry"
];
$array2 = [
"a" => "apple",
"b" => "blueberry",
"d" => "date"
];
$result = array_diff_assoc($array1, $array2);
print_r($result);
산출:
Array
(
[b] => banana
[c] => cherry
)
Array_Diff_Assoc ()를 사용하여 다차원 배열을 비교할 때이 기능은 최상위 배열의 키와 값 만 비교하고 다차원 배열의 내용을 깊이 비교할 수 없기 때문에 문제가 더욱 복잡해집니다.
두 가지 다차원 배열이 있고 차이점을 비교하고 싶다고 가정합니다.
$array1 = [
"fruit" => [
"apple" => 3,
"banana" => 2,
],
"vegetable" => [
"carrot" => 5,
"cucumber" => 7
]
];
$array2 = [
"fruit" => [
"apple" => 3,
"banana" => 3,
],
"vegetable" => [
"carrot" => 5,
"cucumber" => 8
]
];
$result = array_diff_assoc($array1, $array2);
print_r($result);
산출:
Array
(
[fruit] => Array
(
[banana] => 2
)
[vegetable] => Array
(
[cucumber] => 7
)
)
위에서 볼 수 있듯이 Array_diff_assoc ()는 배열의 최상위 구조 만 비교할 수 있으며 다차원 배열에서 중첩 요소를 깊이 비교할 수 없습니다.
다차원 배열의 경우 각 요소의 차이를 재귀 적으로 비교하기 위해 비교 함수를 사용자 정의해야합니다. Array_diff_assoc ()를 재귀 적으로 또는 다른 기능과 함께 호출하여 복잡한 상황을 처리 할 수 있습니다.
다차원 배열의 비교를 수동으로 처리하는 재귀 함수를 작성할 수 있습니다. 다음은 다차원 배열의 차이를 다루는 예입니다.
function array_diff_assoc_recursive($array1, $array2) {
$diff = [];
foreach ($array1 as $key => $value) {
// 요소가 배열 인 경우,그런 다음 재귀 적으로 전화하십시오
if (is_array($value)) {
$diff[$key] = array_diff_assoc_recursive($value, $array2[$key] ?? []);
} else {
// 값이 다른 경우,그런 다음 차이 배열에 추가하십시오
if (!isset($array2[$key]) || $array2[$key] !== $value) {
$diff[$key] = $value;
}
}
}
return $diff;
}
$result = array_diff_assoc_recursive($array1, $array2);
print_r($result);
산출:
Array
(
[fruit] => Array
(
[banana] => 2
)
[vegetable] => Array
(
[cucumber] => 7
)
)
이 접근법을 통해 다차원 배열의 주요 값을 재귀 적으로 비교하고 정확한 차이를 얻을 수 있습니다.
Array_Diff_Assoc () 는 매우 유용한 기능이지만 다차원 배열을 처리 할 때 특정 제한 사항이 있습니다. 다차원 배열의 차이를 비교하려면 재귀를 통해보다 정확한 비교를 달성해야합니다. 복잡한 응용 시나리오에서는 사용자 정의 재귀 비교 기능을 작성하는 것이 다차원 배열의 차이를 다루는 가장 좋은 방법입니다.