PHP의 일일 개발에서 Array_Diff () 함수는 종종 배열에서 차등 작업을 수행하는 데 사용됩니다. 한 배열에서 존재하지만 다른 배열에는없는 값을 찾는 데 도움이 될 수 있습니다. 이것은 데이터 필터링 및 권한 제어와 같은 처리 시나리오에서 매우 실용적입니다.
그러나 종종 간과되는 질문은 다음과 같습니다. array_diff ()는 결과를 반환 할 때 원래 배열의 키 이름을 유지합니까? 아니면 배열을 자동으로 다시 표시합니까?
간단한 예를 살펴 보겠습니다.
<?php
$array1 = ["a" => "green", "b" => "brown", "c" => "blue", "red"];
$array2 = ["green", "yellow", "red"];
$result = array_diff($array1, $array2);
print_r($result);
?>
출력 결과는 다음과 같습니다.
Array
(
[b] => brown
[c] => blue
)
보시다시피, Array_Diff () 가 반환 한 결과는 원래 배열 $ array1 의 키 이름을 유지합니다 . 문자열 키조차도 다시 표시되지 않습니다.
실제로 결과 배열을 다시 표시하려면 array_values ()를 수동으로 사용할 수 있습니다.
$reindexed = array_values(array_diff($array1, $array2));
print_r($reindexed);
산출:
Array
(
[0] => brown
[1] => blue
)
이 경우 키 이름은 0 부터 시작하는 연속 숫자 색인으로 재설정됩니다.
사용자가 태그 세트를 제출하고 시스템 기본 태그에 이미 존재하는 컨텐츠를 제거하려고한다고 가정합니다.
<?php
$userTags = [
10 => "php",
11 => "html",
12 => "custom"
];
$defaultTags = ["php", "html", "css", "javascript"];
$finalTags = array_diff($userTags, $defaultTags);
print_r($finalTags);
?>
출력 결과 :
Array
(
[12] => custom
)
이는이 기능이 사용자의 원래 배열의 주요 이름을 유지하며 데이터베이스 삽입 또는 업데이트 작업에서 귀중한 정보가 될 수 있음을 보여줍니다.
array_diff ()는 키 이름에 관계없이 값 만 비교합니다.
키 이름을 기준으로 비교하려면 array_diff_key ()를 사용할 수 있습니다.
키 이름과 값을 동시에 비교하려면 array_diff_assoc ()를 사용할 수 있습니다.