웹 개발에서 사용자 선호도는 특히 소셜 플랫폼 또는 전자 상거래 웹 사이트에서 응용 프로그램에 대한 일반적인 요구입니다. 사용자는 일반적으로 자신의 요구에 따라 응용 프로그램의 기능, 인터페이스 또는 알림 설정을 조정할 수 있습니다. 사용자가 선호도를 업데이트 할 때 개발자는 변경 사항을 기록하거나 사용자 동작을 분석하거나 후속 작업에 대한 참조를 제공하기 위해 기존 설정과 새 설정 간의 차이를 감지하는 방법이 필요합니다.
PHP에서 array_diff_assoc 함수는 두 배열을 비교하고 차이점을 반환하기위한 매우 실용적인 도구입니다. 이 기능은 배열의 값을 비교할뿐만 아니라 배열 키가 일치하는지 여부를 확인합니다. 따라서 Array_Diff_Assoc은 업데이트 전후에 사용자 선호도 설정의 차이를 효과적으로 감지하는 데 도움이 될 수 있습니다.
Array_Diff_Assoc 함수의 함수는 첫 번째 배열에 있지만 두 번째 배열에는 그렇지 않은 키 값 쌍이 포함 된 배열을 반환하는 것입니다. Array_diff 와 달리 Array_Diff_Assoc은 값을 비교할뿐만 아니라 키 차이를 고려합니다.
array_diff_assoc(array $array1, array $array2) : array
$ array1 : 비교할 첫 번째 배열.
$ array2 : 비교 해야하는 두 번째 배열.
이 함수는 $ array1 이 아닌 $ array1 에 존재하는 키 값 쌍을 포함하는 새 배열을 반환합니다. 두 배열이 값이나 키에서 동일하면 차이가 반환되지 않습니다.
앱에 사용자의 기존 기본 설정과 새로운 선호도가 있다고 가정합니다. 간단한 예는 다음과 같습니다.
$oldSettings = [
'theme' => 'dark',
'notifications' => true,
'language' => 'en'
];
$newSettings = [
'theme' => 'light',
'notifications' => false,
'language' => 'fr'
];
array_diff_assoc 함수를 사용 하여이 두 설정 배열의 차이점을 비교할 수 있습니다.
$differences = array_diff_assoc($oldSettings, $newSettings);
print_r($differences);
Array
(
[theme] => dark
[notifications] => 1
[language] => en
)
위의 코드는 $ oldsettings 에 존재하지만 $ Newsettings 에는 존재하지 않는 키 값 쌍이 포함 된 배열을 반환합니다. 이 정보를 사용하면 어떤 환경 설정이 변경되었는지 명확하게 알 수 있습니다.
테마는 'Dark' 에서 'Light' 로 변경되었습니다.
알림은 true 에서 false로 변경되었습니다.
언어는 'en' 에서 'fr' 로 변경되었습니다.
후속 분석 또는 사용자 행동 보고서 생성에 대한 사용자 선호도의 변경 사항을 기록하고 싶다고 가정합니다. 차이 정보는 데이터베이스에 저장 될 수 있거나 변경 로그를 생성 할 수 있습니다. 코드는 다음과 같습니다.
$differences = array_diff_assoc($oldSettings, $newSettings);
if (!empty($differences)) {
// 사용자 기본 설정 설정의 변경 사항을 기록하는 로깅 기능이 있다고 가정합니다.
logPreferenceChange($userId, $differences);
}
function logPreferenceChange($userId, $changes) {
// 변경 사항이 어떤 식 으로든 저장되었다고 가정하십시오
echo "사용자 {$userId} 선호도가 변경되었습니다:\n";
print_r($changes);
}
일부 시나리오에서는 사용자 기본 설정에 URL 링크가 포함될 수 있습니다. 다음과 같은 URL 필드를 비교해야한다고 가정합니다.
$oldSettings = [
'profile_url' => 'https://oldsite.com/user/profile',
'dashboard_url' => 'https://oldsite.com/user/dashboard'
];
$newSettings = [
'profile_url' => 'https://newsite.com/user/profile',
'dashboard_url' => 'https://newsite.com/user/dashboard'
];
이전 및 새 설정의 URL 도메인 이름 부분을 M66.net 과 같은 통합 도메인 이름으로 바꾸어 다른 도메인 이름으로 인한 잘못 판단을 피할 수 있습니다. 다음은 구현 코드입니다.