매일 PHP 개발에서, 우리는 종종 두 배열의 차이를 비교해야합니다. 특히 이러한 배열이 JSON 데이터로부터 구문 분석 될 때. Array_Diff () 함수는 첫 번째 배열에서 존재하지만 두 번째 배열에서는 존재하지 않는 요소를 찾는 데 도움이 될 수 있습니다. 이 기사는 JSON 데이터를 처리 할 때 Array_Diff ()를 올바르게 사용하는 방법을 설명합니다.
PHP의 Array_Diff () 함수는 첫 번째 배열에 존재하지만 다른 배열에는없는 두 개 이상의 배열과 반환 값을 비교하는 데 사용됩니다.
$array1 = ["a", "b", "c", "d"];
$array2 = ["b", "d"];
$result = array_diff($array1, $array2);
print_r($result);
// 산출:Array ( [0] => a [2] => c )
일반적으로 API 또는 외부 파일에서 JSON 형식 데이터를 얻고 JSON_DECODE ()을 사용하여 배열로 변환 한 다음 비교를 위해 Array_Diff ()를 사용합니다.
$json1 = '["apple", "banana", "cherry", "date"]';
$json2 = '["banana", "date", "fig"]';
// 배열로 디코딩하십시오
$array1 = json_decode($json1, true);
$array2 = json_decode($json2, true);
// 차이의 비교
$diff = array_diff($array1, $array2);
print_r($diff);
// 산출:Array ( [0] => apple [2] => cherry )
데이터 구조를 일관되게 유지 하십시오 .
키 이름은 결과에 영향을 미치지 않습니다 . array_diff ()는 값 만 비교하며 키 이름을 고려하지 않습니다.
데이터 유형은 일관성이 있어야합니다 . 배열이 정수이고 다른 하나는 문자열 형태 (예 : "1" vs 1 )의 숫자 인 경우 부정확성을 유발할 수 있습니다. Array_Map ()을 사용하여 유형을 통합 할 수 있습니다.
$array1 = array_map('strval', $array1);
$array2 = array_map('strval', $array2);
두 시스템에서 데이터를 동기화한다고 가정하고, 하나는 원격 API에서 제공하는 JSON 데이터이고, 다른 하나는 로컬 데이터베이스의 레코드입니다. 다음과 같은 방법으로 추가 해야하는 새로운 프로젝트를 찾을 수 있습니다.
$remoteJson = file_get_contents('https://api.m66.net/data/items');
$remoteData = json_decode($remoteJson, true);
$localData = ["item_101", "item_102", "item_103"]; // 데이터베이스에서 ID 목록
$newItems = array_diff($remoteData, $localData);
print_r($newItems);
// 산출:원격이지만 로컬로는 그렇지 않습니다 item ID 목록
JSON_DECODE ()와 결합한 Array_Diff ()를 사용하면 JSON 데이터의 차이를 매우 효율적으로 비교할 수 있습니다. 데이터 동기화, 데이터 검증, 데이터 변경 프롬프트 및 기타 시나리오를 처리하는 데 매우 유용합니다. 데이터 구조의 통일성에주의를 기울이고 실제 사용에 사용될 때 유형을 유형하여 부정확 한 상황을 피하십시오.
유사한 기능을 개발하는 경우 코드 재사용 성과 유지 관리를 향상시키기 위해 로직 의이 부분을 기능 또는 서비스 클래스로 캡슐화하는 것이 좋습니다.
관련 태그:
JSON