PHP 개발에서 양식 데이터의 변경 감지는 특히 사용자가 양식에서 데이터를 수정했는지 여부를 확인해야 할 때 일반적인 요구 사항입니다. PHP는 데이터 비교를 구현하는 다양한 방법을 제공하며 Array_diff_uassoc 함수는 매우 효과적인 도구입니다. 두 배열의 차이를 비교할 수있을뿐만 아니라 사용자 정의 키 값 비교 함수를 기반으로 차이점을 판단 할 수 있습니다. 이로 인해 양식 데이터 변경 감지에서 적용 가능성이 뛰어납니다.
Array_Diff_Uassoc 함수는 두 배열의 주요 이름과 해당 값을 비교하는 데 사용됩니다. Array_Diff_Assoc 함수와 유사하게 Array_Diff_Uassoc은 배열에서 요소의 키와 요소 값 차이를 확인하지만 차이점은 배열의 요소 값을 비교하기위한 사용자 정의 비교 함수를 제공 할 수 있다는 것입니다.
array_diff_uassoc ( array $array1 , array $array2 , callable $key_compare_func ) : array
$ array1 : 첫 번째 배열.
$ array2 : 두 번째 배열.
$ key_compare_func : 배열에서 요소의 키를 비교하는 콜백 함수. 키가 같으면 계속 값을 비교하십시오.
이 함수는 $ array1 에 존재하지만 $ array2 에는 존재하지 않는 키 값 쌍을 반환합니다.
사용자의 원래 양식 데이터가 포함 된 배열과 사용자가 제출 한 새로운 양식 데이터가 포함 된 배열이 있다고 가정합니다. Array_diff_uassoc을 사용하여 변경된 필드를 감지 할 수 있습니다.
<?php
// 사용자 원시 데이터
$original_data = [
'username' => 'john_doe',
'email' => 'john@example.com',
'age' => 28,
];
// 사용자가 제출 한 새로운 데이터
$new_data = [
'username' => 'john_doe',
'email' => 'john@m66.net', // 여기서 원래 도메인 이름이 대체됩니다 m66.net
'age' => 29,
];
// 비교 함수를 정의하십시오,양식 필드의 값을 비교하는 데 사용됩니다
function custom_compare($a, $b) {
return $a === $b ? 0 : 1;
}
// 사용 array_diff_uassoc 변경 사항을 확인하십시오
$changed_fields = array_diff_uassoc($new_data, $original_data, 'custom_compare');
// 출력 변경 필드
echo "필드를 변경하십시오:\n";
print_r($changed_fields);
?>
우리는 원본 양식 데이터와 사용자 제출 양식 데이터를 각각 저장하는 $ ordain_data 와 $ new_data 의 두 배열을 만듭니다.
custom_copare는 양식 필드의 값이 동일한지 여부를 비교하는 간단한 비교 함수입니다. 우리는이를 사용하여 차이가 필드의 값이 변할 때만 차이로 인식되도록합니다.
array_diff_uassoc 함수를 호출하고 원래 데이터 배열을 전달하고 데이터 배열 제출 및 사용자 정의 비교 기능을 제출하십시오.
마지막으로, 변경된 필드를 출력하여 어떤 필드가 값을 변경했는지 확인합니다.