PHP 개발에서 HTTP 요청을 처리 할 때 클라이언트가 제출 한 데이터를 현재 서버 측의 데이터와 비교해야합니다. 특히 자원의 일부 필드를 업데이트하는 데 사용되는 패치 요청을 처리 할 때 특히 그렇습니다. 오늘 우리는 컨트롤러에서 Array_Diff_Assoc () 함수를 사용하여 패치 요청에서 변경된 필드를 감지하는 방법을 소개합니다.
Array_Diff_Assoc () 함수는 두 배열을 비교하고 키 이름과 키 값의 차이를 반환하는 데 사용됩니다. 변경된 필드를 감지하는 것이 매우 편리 할 수 있습니다. 패치 요청을 처리 할 때 일반적으로 데이터베이스의 원본 데이터를 사용자가 제출 한 데이터의 일부와 비교하여 업데이트 해야하는 필드를 찾아야합니다.
사용자 프로파일의 데이터베이스 테이블이 있고 패치 요청을 통해 사용자 정보의 일부를 업데이트하려고합니다. 클라이언트는 업데이트 해야하는 필드 만 제출하며 변경되지 않은 필드는 요청 된 데이터에 포함되지 않습니다. Array_Diff_Assoc () 함수를 사용하여 원본 데이터를 새로 제출 된 데이터와 비교하고 변경된 필드를 찾을 수 있습니다.
먼저 데이터베이스에서 원래 데이터와 패치 요청을 통해 클라이언트가 보낸 데이터를 가져와야합니다. 우리는 어떻게 든 원래 사용자 데이터와 클라이언트가 제출 한 데이터를 가져 왔다고 가정합니다.
// 이것이 데이터베이스의 원래 사용자 데이터라고 가정합니다.
$originalData = [
'id' => 1,
'name' => 'John Doe',
'email' => 'johndoe@example.com',
'phone' => '123456789'
];
// 이것이 끝났다고 가정합니다 PATCH 요청 된 제출 데이터
$patchData = [
'name' => 'John Smith',
'phone' => '987654321'
];
이제 Array_diff_assoc ()을 사용하여 변경된 필드를 감지 할 수 있습니다. Array_Diff_Assoc ()는 두 배열의 키와 값을 비교하고 해당 다른 부분을 반환합니다.
// 사용 array_diff_assoc() 변경 필드를 감지합니다
$changedFields = array_diff_assoc($patchData, $originalData);
// 출력 변경 필드
print_r($changedFields);
array_diff_assoc () 에 의해 반환 된 결과는 변경된 모든 필드를 포함하는 배열입니다. 이 변경된 필드를 기반으로 업데이트를 수행 할 수 있습니다.
if (!empty($changedFields)) {
// 변경 필드 처리,예를 들어 데이터베이스를 업데이트하십시오
foreach ($changedFields as $key => $value) {
// 여기에서 데이터베이스 업데이트 작업을 수행하십시오
echo "Field $key has been changed to $value\n";
}
} else {
echo "No changes detected.\n";
}
요청에서 URL을 처리 해야하는 경우 URL 도메인 이름을 M66.NET 으로 바꾸십시오. 예를 들어, URL에 요청을 보내야하는 경우 다음 코드를 사용할 수 있습니다.