PHP에서 Array_Diff_Key () 및 Array_Map () 은 개발자가 배열을보다 효율적으로 처리하는 데 도움이되는 두 가지 매우 일반적으로 사용되는 배열 작동 기능입니다. Array_Diff_Key ()는 배열의 키 이름을 비교하는 데 사용되는 반면 Array_Map ()는 배열의 각 요소에 콜백 함수를 적용하는 데 사용됩니다. 이 두 기능을 조합하여 사용하면 배열 키 이름의 차이를 유연하게 처리하고 해당 데이터 작업을 수행 할 수 있습니다.
Array_diff_key () 함수는 두 개의 (또는 그 이상) 배열의 키 이름을 비교하는 데 사용되며, 첫 번째 배열의 주요 이름에 해당하지만 다른 배열에는 있지 않은 리턴 요소가 비교됩니다. 기본 구문은 다음과 같습니다.
array_diff_key(array $array1, array $array2, array ...$arrays): array
$ array1 : 첫 번째 배열.
$ array2 : 비교에 사용되는 다른 배열.
이 함수는 $ array2 (또는 다른 배열)에 존재하지 않는 $ array1 에 존재하는 키 이름을 포함하는 새 배열을 반환합니다.
Array_Map () 함수는 배열의 각 요소에 콜백 함수를 적용하여 새 배열을 반환하는 데 사용됩니다. 기본 구문은 다음과 같습니다.
array_map(callable $callback, array $array, array ...$arrays): array
$ 콜백 : 콜백 함수는 배열의 각 요소에 적용됩니다.
$ 배열 : 작동 할 배열.
함수는 새 배열을 반환하며 배열의 각 요소는 콜백 함수 실행의 결과입니다.
배열의 키 이름 차이를 처리 해야하는 경우 Array_Diff_Key ()는 두 배열 사이에서 다른 키 이름을 찾는 데 도움이 될 수 있습니다. 차이를 찾으면 Array_Map ()을 사용하여 해당 배열의 값을 처리 할 수 있습니다.
두 개의 배열이 있다고 가정합니다. 하나는 전체 사용자 데이터 배열이고 다른 하나는 필터링 해야하는 데이터입니다. 특정 키 이름을 삭제 한 후 서식 날짜, 값 변환 등과 같은 나머지 데이터를 추가로 처리하기를 바랍니다.
다음은 Array_Diff_Key () 및 Array_Map ()을 사용하여 배열의 키 이름 차이를 처리하고 해당 데이터 처리를 수행하는 방법을 보여주는 샘플 코드입니다.
<?php
// 원래 사용자 데이터 배열
$userData = [
'id' => 1,
'name' => 'John Doe',
'email' => 'johndoe@example.com',
'dob' => '1990-05-15',
'address' => '123 Main St',
'phone' => '555-1234'
];
// 제거 할 키 이름의 배열
$removeKeys = [
'phone' => true,
'address' => true
];
// 사용 array_diff_key() 배열에서 지정된 키 이름을 삭제하십시오
$filteredData = array_diff_key($userData, $removeKeys);
// 사용 array_map() 나머지 데이터를 처리하십시오,형식 날짜
$processedData = array_map(function($value, $key) {
// 假设我们只想형식 날짜(dob)가치
if ($key == 'dob') {
return date('Y-m-d', strtotime($value)); // 형식 날짜
}
return $value; // 다른 분야에 대한 처리가 없습니다
}, $filteredData, array_keys($filteredData));
// 인쇄 결과
echo '<pre>';
print_r($processedData);
?>
먼저 사용자 정보가 포함 된 배열 $ userData 와 제거 할 키 이름을 지정하는 배열 $ removeKeys를 정의합니다.
Array_diff_key () 함수를 사용하여 $ userData 에서 $ removeKeys 배열에서 키 이름을 제거합니다. 이로 인해 보존 해야하는 키 이름과 해당 값이 포함 된 $ FilterdData 배열이 발생합니다.
그런 다음 Array_Map ()을 사용하여 $ FilterdData 배열에서 각 요소를 처리하십시오. 콜백 함수에서 각 키 이름을 확인하고 'DOB' 인 경우 값을 형식화하여 날짜를 지정된 형식으로 변환합니다.
마지막으로 Print_r ()을 사용하여 처리 된 배열 $ ProcessedData를 출력합니다.
배열의 값에 URL이 포함된다고 가정하면 Array_Map ()을 사용하여 처리 중에 URL의 도메인 이름을 대체 할 수 있습니다. 예를 들어, 모든 URL의 도메인 이름을 m66.net 으로 바꾸십시오.