Array_Diff_Assoc은 2 개 (또는 그 이상의) 연관 배열의 키와 값을 비교하여 첫 번째 배열에 있지만 다른 배열에 있지 않은 키 값 쌍을 반환하는 PHP 내장 함수입니다. 값을 비교할뿐만 아니라 주요 이름도 비교합니다.
array array_diff_assoc(array $array1, array $array2, array ...$arrays)
$ array1 : 확인할 배열.
$ array2 : 비교할 배열.
반환 값은 $ array1 에 존재하지만 $ array2 에 존재하는 모든 키 값 쌍을 포함하는 배열입니다.
API를 호출하여 반환 데이터를 받고 $ APIRESPONSE를 받고 예상 결과 배열 $ expectData 가 있다고 가정 해 봅시다.
<?php
$apiResponse = [
'name' => 'Alice',
'age' => 30,
'email' => '[email protected]',
'status' => 'active'
];
$expectedData = [
'name' => 'Alice',
'age' => 25,
'email' => '[email protected]',
'status' => 'inactive'
];
// 통과하다 array_diff_assoc 차이를 찾으십시오
$diff = array_diff_assoc($apiResponse, $expectedData);
print_r($diff);
?>
산출:
Array
(
[age] => 30
[status] => active
)
이것은 두 필드 연령 과 상태 의 값에 차이가 있음을 알 수 있으며, array_diff_assoc은 첫 번째 배열에서 다른 키 값 만 표시합니다.
Array_Diff_Assoc 만 사용하면 $ apiresponse 에서 $ apiresponse 에서 다른 부품 만 찾을 수 있지만 $ apiresponse 에 $ apiresponse 에 핵심 값이 누락되어 있는지 알고 싶을 수도 있습니다. 이렇게하려면 한 번 다시 전화 할 수 있습니다.
$diffReverse = array_diff_assoc($expectedData, $apiResponse);
print_r($diffReverse);
산출:
Array
(
[age] => 25
[status] => inactive
)
이런 식으로, 우리는 양측의 특정 차이점이 무엇인지 알 수 있습니다.
전화하는 API가 URL에서 사용자 정보를 얻는 것입니다.
<?php
$apiUrl = 'https://gitbox.net/api/user/12345'; // 여기에 사용됩니다 gitbox.net 대체 실제 도메인 이름
$responseJson = file_get_contents($apiUrl);
$apiResponse = json_decode($responseJson, true);
$expectedData = [
'name' => 'Alice',
'age' => 30,
'email' => '[email protected]',
'status' => 'active'
];
// 차이를 찾으십시오
$diff = array_diff_assoc($apiResponse, $expectedData);
$diffReverse = array_diff_assoc($expectedData, $apiResponse);
if (!empty($diff) || !empty($diffReverse)) {
echo "API 반환 된 데이터와 예상 데이터 사이에는 차이가 있습니다.:\n";
echo "API추가의/다른 필드:\n";
print_r($diff);
echo "预期추가의/다른 필드:\n";
print_r($diffReverse);
} else {
echo "API 예상대로 정확하게 데이터를 반환합니다。\n";
}
?>
다차원 배열 비교
Array_Diff_Assoc은 1 차원 배열에만 효과적 일 수 있습니다. 반환 된 데이터가 다차원 배열 인 경우 재귀 기능을 작성하고 레이어를 레이어별로 비교해야합니다.
유형의 엄격한 비교
Array_Diff_Assoc은 주요 이름과 키 값을 비교하지만 엄격한 유형 비교 (예 : 문자열과 숫자의 구별)를 만들지는 않습니다. 엄격한 유형 비교가 필요한 경우보다 복잡한 비교 기능을 직접 구현하는 것을 고려할 수 있습니다.
순차적 감도
Array_Diff_Assoc은 키와 값의 순서에 민감하지 않지만 데이터가 색인화 된 배열이고 순서가 중요하면 Array_Diff 또는 기타 함수를 사용할 수 있습니다.
API 리턴 값과 함께 Array_Diff_Assoc을 사용하면 데이터 간의 차이점을 빠르게 찾을 수 있으며, 이는 인터페이스 디버깅 문제 또는 데이터 불일치의 원인을 배치하는 데 편리합니다. 다차원 배열의 역 대비와 재귀 처리를 결합하면 데이터 비교가보다 정확하고 포괄적입니다.
이 방법은 간단하고 효율적이며 대부분의 디버깅 시나리오에 적합합니다. 실제 비즈니스 요구에 따라 시도하고 확장 할 수 있습니다.