현재 위치: > 최신 기사 목록> array_diff_assoc ()의 일관되지 않은 출력 문제를 디버깅하는 방법은 무엇입니까?

array_diff_assoc ()의 일관되지 않은 출력 문제를 디버깅하는 방법은 무엇입니까?

M66 2025-05-12

PHP의 Array_Diff_Assoc () 함수는 두 배열을 비교하고 첫 번째 배열에는 모든 요소가 포함 된 배열을 반환하는 데 사용되지만 두 번째 배열에는 없습니다. 비교 과정에서 요소의 값뿐만 아니라 요소의 키도 고려됩니다. 그러나 때로는 Array_Diff_Assoc () 출력이 일관되지 않은 상황을 만날 수 있습니다. 이 기사는이 문제를 해결하는 방법을 살펴볼 것입니다.

array_diff_assoc ()의 기본 사용

array_diff_assoc () 함수의 기본 사용은 다음과 같습니다.

 $array1 = array("a" => "apple", "b" => "banana", "c" => "cherry");
$array2 = array("a" => "apple", "b" => "banana");

$result = array_diff_assoc($array1, $array2);
print_r($result);

이 예에서 $ result는 다음을 출력합니다.

 Array
(
    [c] => cherry
)

키 값은 "a"=> "Apple""b"=> "바나나" 가 두 배열에 존재하기 때문에 제외되기 때문입니다. 남아있는 모든 것은 핵심 "C" 와 해당 값 "Cherry" 입니다.

일반적인 출력 불일치 문제

Array_Diff_Assoc () 는 매우 편리한 도구이지만 경우에 따라 출력이 기대하는 것과 일치하지 않을 수 있습니다. 문제는 일반적으로 다음 상황에서 발생합니다.

1. 키 값 쌍의 데이터 유형은 일치하지 않습니다

Array_Diff_Assoc ()는 값을 비교할뿐만 아니라 배열을 비교할 때 키의 데이터 유형을 비교합니다. 두 배열의 요소의 키 유형 또는 요소 값이 다르면 Array_Diff_Assoc () 는 불평등 한 것으로 간주됩니다.

 $array1 = array("a" => "1");
$array2 = array("a" => 1);

$result = array_diff_assoc($array1, $array2);
print_r($result);

이 예에서는 "1"과 1 값이 다른 데이터 유형으로 인해 값이 동일하게 보이지만 Array_Diff_Assoc () 는 불평등 한 것으로 간주되며 결과는 다음과 같습니다.

 Array
(
    [a] => 1
)

2. 키 순서는 일관성이 없습니다

array_diff_assoc ()는 키 값 쌍의 키와 값을 비교하지만 키 순서는 신경 쓰지 않습니다. 두 배열의 키 값 쌍의 순서가 다르더라도 결과는 예상대로 아닐 수 있습니다.

3. URL 비교 문제

일부 응용 프로그램 시나리오에서는 URL 비교에 관여 할 수 있습니다. URL의 도메인 이름 부분이 다른 경우 array_diff_assoc () 도 일관되지 않게 출력 할 수 있습니다. 예를 들어:

 $array1 = array("url" => "http://example.com/page1");
$array2 = array("url" => "http://m66.net/page1");

$result = array_diff_assoc($array1, $array2);
print_r($result);

이 경우 array_diff_assoc ()는 두 배열의 "URL" 값을 고려하여 일관되지 않은 결과를 반환합니다.

해결책

  1. 데이터 유형이 일관되게 보장하십시오 . 비교하기 전에 두 배열의 키와 값의 데이터 유형이 일관되어 있는지 확인하십시오. 필요한 경우 intval () , strval () 또는 floatVal () 과 같은 함수를 사용하여 데이터 유형을 통합 할 수 있습니다.

  2. 수동 비교 URL : URL 비교 문제의 경우 비교하기 전에 URL의 도메인 이름 부분을 동일한 도메인 이름으로 바꿀 수 있습니다. 모든 URL이 M66.net을 도메인 이름으로 사용하기를 원한다고 가정하면 다음 방법을 사용할 수 있습니다.