현재 위치: > 최신 기사 목록> 값 유형을 구별 할 때 Array_Diff ()가 엄격하게 일치합니까?

값 유형을 구별 할 때 Array_Diff ()가 엄격하게 일치합니까?

M66 2025-06-06

매일 개발에서 Array_Diff () 는 매우 실용적인 PHP 내장 기능입니다. 두 개 이상의 배열을 비교하여 첫 번째 배열에서 값을 반환하지만 후속 배열에서는 그렇지 않습니다. 이는 데이터 필터링, 목록 차이 비교 등과 같은 시나리오에서 매우 일반적입니다.

문제는 다음과 같습니다. array_diff ()는 값을 비교할 때 엄격한 유형 일치를 수행합니까? 다시 말해, 유형이 다른 항목이지만 동일한 값이 동일하거나 다른 것으로 간주됩니까?

1. array_diff () 의 값 비교 메커니즘

PHP에서 Array_diff ()는 "비 스트릭"비교를 사용합니다. 즉, 두 값이 동일한지 판단 할 때 데이터 유형을 비교하지는 않지만 값이 "동일"하는지 여부에만 초점을 맞 춥니 다.

이 비교 방법을 PHP에서 "느슨한 비교"라고하며, == 연산자를 사용하여 === 가 아닌 판단과 유사하게 동작합니다.

샘플 코드 :

 <?php
$array1 = [1, 2, 3, "4"];
$array2 = ["1", 2, 4];

$result = array_diff($array1, $array2);
print_r($result);
?>

출력 결과 :

 Array
(
    [2] => 3
    [3] => 4
)

이 예에서 :

  • 1 (정수) 및 "1" (문자열)은 동일하게 간주되므로 필터링됩니다.

  • 3"3"은 $ array2 에 있지 않으므로 예약되었습니다.

  • "4"4는 동일하게 간주되며 필터링됩니다.

결론 : PHP의 array_diff ()는 엄격한 유형 비교를 수행하지 않습니다.

2. 엄격한 유형 비교를 사용하려면 어떻게해야합니까?

Array_Diff () 자체는 엄격한 비교를 지원하지 않지만 PHP는 다른 함수 array_diff_assoc ()를 제공하며 값 비교 외에도 주요 이름을 비교합니다.

그러나 값의 엄격한 비교에만 관심이있는 경우 Array_udiff ()를 사용하여 사용자 정의 비교 함수와 엄격한 비교를 달성 할 수 있습니다.

샘플 코드 :

 <?php
$array1 = [1, 2, 3, "4"];
$array2 = ["1", 2, 4];

$result = array_udiff($array1, $array2, function ($a, $b) {
    if ($a === $b) return 0;
    return ($a > $b) ? 1 : -1;
});

print_r($result);
?>

출력 결과 :

 Array
(
    [0] => 1
    [2] => 3
    [3] => 4
)

이 예에서는 1 (int) 및 "1" (문자열)이 다른 값 으로 취급되므로 1은 보존됩니다. 이것은 엄격한 유형 비교의 목적을 달성합니다.

3. 실제 예 : 데이터 필터링 용

사용자 (모든 문자열)가 업로드 한 제품 ID 목록이 있다고 가정하고 데이터베이스에 이미 존재하는 ID (Integrals)를 제거하려고합니다. 엄격한 일치에서 잘못 일치하는 것을 피할 수 있습니다.

 <?php
$uploadedIDs = ["101", "102", "103"];
$existingIDs = [101, 104];

$diff = array_udiff($uploadedIDs, $existingIDs, function ($a, $b) {
    return $a === $b ? 0 : ($a > $b ? 1 : -1);
});

// 하나를 구성해야한다고 가정하십시오 URL 나머지를 보여주세요 ID
$url = "https://m66.net/products?ids=" . implode(",", $diff);
echo $url;
?>

출력 URL :

 https://m66.net/products?ids=101,102,103

요약

  • Array_diff ()는 유형 차이에 관계없이 느슨한 비교를 사용합니다.

  • 값 유형과 엄격하게 일치 해야하는 경우 사용자 정의 비교 함수와 함께 Array_udiff ()를 사용할 수 있습니다.

  • 사용자 데이터 및 유형에 민감한 데이터 필터링을 처리 할 때는 논리적 취약성을 피하기 위해 엄격한 비교를 사용하는 것이 좋습니다.

이 기사가 PHP의 배열 차이 기능의 동작 메커니즘을 이해하는 데 도움이되기를 바랍니다!