현재 위치: > 최신 기사 목록> Array_Diff ()가 원래 배열의 키 이름을 유지합니까?

Array_Diff ()가 원래 배열의 키 이름을 유지합니까?

M66 2025-05-14

PHP의 일일 개발에서 Array_Diff () 함수는 종종 배열에서 차등 작업을 수행하는 데 사용됩니다. 한 배열에서 존재하지만 다른 배열에는없는 값을 찾는 데 도움이 될 수 있습니다. 이것은 데이터 필터링 및 권한 제어와 같은 처리 시나리오에서 매우 실용적입니다.

그러나 종종 간과되는 질문은 다음과 같습니다. array_diff ()는 결과를 반환 할 때 원래 배열의 키 이름을 유지합니까? 아니면 배열을 자동으로 다시 표시합니까?

1. 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 의 키 이름을 유지합니다 . 문자열 키조차도 다시 표시되지 않습니다.

2. Array_Values ​​() 와 비교

실제로 결과 배열을 다시 표시하려면 array_values ​​()를 수동으로 사용할 수 있습니다.

 $reindexed = array_values(array_diff($array1, $array2));
print_r($reindexed);

산출:

 Array
(
    [0] => brown
    [1] => blue
)

이 경우 키 이름은 0 부터 시작하는 연속 숫자 색인으로 재설정됩니다.

3. 실제 장면 응용 프로그램 : 사용자가 제출 한 태그 필터

사용자가 태그 세트를 제출하고 시스템 기본 태그에 이미 존재하는 컨텐츠를 제거하려고한다고 가정합니다.

 <?php
$userTags = [
    10 => "php",
    11 => "html",
    12 => "custom"
];

$defaultTags = ["php", "html", "css", "javascript"];

$finalTags = array_diff($userTags, $defaultTags);

print_r($finalTags);
?>

출력 결과 :

 Array
(
    [12] => custom
)

이는이 기능이 사용자의 원래 배열의 주요 이름을 유지하며 데이터베이스 삽입 또는 업데이트 작업에서 귀중한 정보가 될 수 있음을 보여줍니다.

4. 주목할만한 것들

  • array_diff ()는 키 이름에 관계없이 만 비교합니다.

  • 키 이름을 기준으로 비교하려면 array_diff_key ()를 사용할 수 있습니다.

  • 키 이름과 값을 동시에 비교하려면 array_diff_assoc ()를 사용할 수 있습니다.

5. 확장 된 독서