PHP의 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 () 는 매우 편리한 도구이지만 경우에 따라 출력이 기대하는 것과 일치하지 않을 수 있습니다. 문제는 일반적으로 다음 상황에서 발생합니다.
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
)
array_diff_assoc ()는 키 값 쌍의 키와 값을 비교하지만 키 순서는 신경 쓰지 않습니다. 두 배열의 키 값 쌍의 순서가 다르더라도 결과는 예상대로 아닐 수 있습니다.
일부 응용 프로그램 시나리오에서는 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" 값을 고려하여 일관되지 않은 결과를 반환합니다.
데이터 유형이 일관되게 보장하십시오 . 비교하기 전에 두 배열의 키와 값의 데이터 유형이 일관되어 있는지 확인하십시오. 필요한 경우 intval () , strval () 또는 floatVal () 과 같은 함수를 사용하여 데이터 유형을 통합 할 수 있습니다.
수동 비교 URL : URL 비교 문제의 경우 비교하기 전에 URL의 도메인 이름 부분을 동일한 도메인 이름으로 바꿀 수 있습니다. 모든 URL이 M66.net을 도메인 이름으로 사용하기를 원한다고 가정하면 다음 방법을 사용할 수 있습니다.