Array_Diff_Assoc () 는 PHP에서 매우 실용적인 기능입니다. 두 배열의 키 값 쌍을 비교하고 두 번째 배열과 첫 번째 배열의 다른 부분을 반환하는 데 사용됩니다. 이 기능은 매우 직관적이지만 개발자는 사용 중에 행동을 오해하는 경향이 있습니다. 오늘, 우리는 Array_diff_assoc () 에서 몇 가지 일반적인 함정과 오해를 탐구하여 작동 방식을 더 잘 이해할 수 있도록 도와줍니다.
Array_Diff_Assoc ()는 배열의 값을 비교할뿐만 아니라 배열의 키를 비교합니다. 따라서 키가 다른 한 값이 동일하더라도 두 배열은 "다른"으로 간주됩니다. 이것은 값을 비교하고 키를 신경 쓰지 않는 array_diff () 함수의 동작과 다릅니다.
$array1 = [
0 => 'apple',
1 => 'banana'
];
$array2 = [
1 => 'banana',
0 => 'apple'
];
$result = array_diff_assoc($array1, $array2);
print_r($result);
산출:
Array
(
[0] => apple
)
설명하다:
$ array1 및 $ array2 의 값은 동일하지만 Array_Diff_Assoc ()는 키 때문에 다르다고 생각합니다.
Array_Diff_Assoc ()는 배열의 값과 키를 엄격하게 비교하므로 유형을 확인할뿐만 아니라 값 유형이 일치하는지 확인합니다. 즉, 숫자 1 과 문자열 '1'은 다른 것으로 간주됩니다.
$array1 = [
'a' => 1,
'b' => '2'
];
$array2 = [
'a' => '1',
'b' => 2
];
$result = array_diff_assoc($array1, $array2);
print_r($result);
산출:
Array
(
[a] => 1
[b] => '2'
)
설명하다:
Array_diff_assoc ()는 숫자 1 과 문자열 '1'을 다른 값으로 취급합니다. 마찬가지로 '2' 와 2 도 다르게 간주됩니다. 이 엄격한 비교는 데이터 유형에 더 많은주의를 기울이고 예기치 않은 결과를 피할 수있게 해줍니다.
Array_Diff_Assoc () 의 첫 번째 매개 변수가 빈 배열 인 경우 빈 배열을 직접 반환합니다. 이 동작은 합리적이지만 일부 개발자는 빈 배열이 원래 배열로 돌아갈 것이라고 오해 할 수 있습니다. 실제로, Array_diff_assoc ()는 두 배열 모두 내용이 있고 차이가있는 경우에만 비어 있지 않은 미분 결과를 반환합니다.
$array1 = [];
$array2 = [1 => 'apple', 2 => 'banana'];
$result = array_diff_assoc($array1, $array2);
print_r($result);
산출:
Array
()
설명하다:
$ array1이 비어 있으므로 Array_Diff_Assoc ()는 차이가 없음을 나타내는 빈 배열을 반환합니다. 이로 인해 일부 개발자들은이 기능에 문제가 있다고 잘못 생각하게 할 수 있습니다.
Array_Diff_Assoc ()는 1 차원 배열의 키 값 쌍만 비교합니다. 배열에 중첩 된 배열이 포함 된 경우 array_diff_assoc ()는 이러한 중첩 어레이의 키 값 쌍을 재귀 적으로 비교하지 않습니다.
$array1 = [
'a' => ['apple', 'orange'],
'b' => 'banana'
];
$array2 = [
'a' => ['apple', 'orange'],
'b' => 'banana'
];
$result = array_diff_assoc($array1, $array2);
print_r($result);
산출:
Array
()
설명하다:
Array1 및 Array2 의 값에 중첩 된 배열이 포함되어 있어도 Array_Diff_Assoc ()는 중첩 배열의 내용을 재귀 적으로 비교하지 않기 때문에이 두 배열이 여전히 동일하게 고려됩니다. 중첩 어레이를 비교 해야하는 경우 다른 방법이나 재귀 함수를 사용해야 할 수도 있습니다.
Array_Diff_Assoc ()에 의해 반환 된 배열에는 첫 번째 배열과 다른 키 값 쌍만 포함됩니다. 차이가 없으면 함수는 빈 배열을 반환합니다. 많은 개발자들은 그것을 사용할 때 이것을 무시하여 반환 결과를 오해하게합니다.
$array1 = [1, 2, 3];
$array2 = [1, 2];
$result = array_diff_assoc($array1, $array2);
print_r($result);
산출:
Array
(
[2] => 3
)
설명하다:
이 예에서는 array_diff_assoc ()는 2 의 키와 3 값의 배열 요소를 반환하여 $ array1 에 존재하며 $ array2 에 존재하지 않음을 나타냅니다.