API를 개발할 때는 종종 차이를 결정하기 위해 두 페이로드의 내용을 비교해야합니다. 예를 들어, 사용자 정보를 업데이트 할 때 새 데이터와 이전 데이터의 차이점을 비교하거나 인터페이스를 디버깅 할 때 반환 된 데이터가 예상 데이터와 일치하는지 확인하십시오. PHP는 매우 유용한 기능 인 Array_Diff_Assoc 을 제공하므로 두 배열의 차이를 비교할 수 있습니다. 다음은이 기능을 사용하여 페이로드 내용을 비교하는 방법에 대한 자세한 설명입니다.
Array_Diff_Assoc 는 PHP의 내장 기능으로 두 배열의 키 값 쌍을 비교하여 첫 번째 배열에는 존재하지만 두 번째 배열에는 존재하지 않는 요소를 찾습니다. Array_diff 와 달리 Array_Diff_Assoc은 값을 비교할뿐만 아니라 키 이름도 비교합니다. 요소는 키 이름과 값이 일치하지 않는 경우에만 다른 것으로 간주됩니다.
array_diff_assoc(array $array1, array $array2): array
$ array1 : 비교를위한 참조 배열로서 첫 번째 배열.
$ array2 : 첫 번째 배열과 비교하여 두 번째 배열.
이 함수는 $ array1 에 존재하지만 $ array2 에 있지 않은 요소를 포함하는 배열을 반환합니다.
JSON 형식의 두 개의 페이로드가 다음과 같이 형식으로 기존 및 새로운 사용자 데이터를 각각 나타냅니다.
{
"user_id": 12345,
"name": "장 산",
"email": "zhangsan@m66.net",
"phone": "1234567890"
}
{
"user_id": 12345,
"name": "장 산",
"email": "zhangsan@m66.net",
"phone": "0987654321"
}
이 두 JSON 페이로드의 데이터 차이를 비교하고 키 값 쌍이 일관된 지 확인하려고합니다. 여기서는 Array_diff_assoc을 사용하여 구현할 수 있습니다.
먼저,이 두 JSON 데이터를 PHP 배열로 변환해야합니다.
<?php
// 오래된 데이터
$old_payload = '{"user_id": 12345, "name": "장 산", "email": "zhangsan@m66.net", "phone": "1234567890"}';
// 새로운 데이터
$new_payload = '{"user_id": 12345, "name": "장 산", "email": "zhangsan@m66.net", "phone": "0987654321"}';
// 디코딩 JSON 데이터는입니다 PHP 정렬
$old_data = json_decode($old_payload, true);
$new_data = json_decode($new_payload, true);
// 输出정렬查看结果
var_dump($old_data);
var_dump($new_data);
?>
Array_diff_assoc 함수를 사용하면 두 배열의 차이를 쉽게 찾을 수 있습니다.
<?php
// 차이를 얻으십시오
$differences = array_diff_assoc($old_data, $new_data);
// 출력 차이
if (!empty($differences)) {
echo "데이터 차이:\n";
print_r($differences);
} else {
echo "데이터 일관성,차이가 없습니다。\n";
}
?>
데이터 차이:
Array
(
[phone] => 1234567890
)
위에서 볼 수 있듯이 결과는 기존 데이터와 새 데이터에서 전화 값이 다르다는 것을 보여줍니다. 이전 데이터에서 전화 값이 1234567890 의 전화 값을 보여줍니다. 이것이 바로 우리가 비교하기를 희망하는 차이입니다.
API 디버깅 : API를 개발할 때 인터페이스에서 반환 된 데이터를 예상 결과와 비교해야 할 수도 있습니다. Array_diff_assoc을 사용하여 차이점을 빠르게보고 개발자가 문제를 찾도록 도와줍니다.
데이터 업데이트 : 사용자 프로필 업데이트 시나리오 에서이 방법을 사용하여 신규 데이터와 이전 데이터의 차이점을 비교하여 변경된 필드를 결정할 수 있습니다.
로깅 : 사용자 동작 또는 데이터 변경 로그를 기록 할 때는 데이터 변경의 특정 내용을 이해하여 후속 분석을 용이하게합니다.