/* 연관 배열들의 중복된 요소를 제거하기 */
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['b' => 2, 'c' => 3, 'd' => 4];

$result = array_diff_assoc($array1, $array2);
print_r($result); // Array ( [a] => 1 )

/* 연관 배열 간의 차이 확인 */
$current_user_info = ['id' => 1, 'name' => 'John', 'age' => 30];
$updated_user_info = ['id' => 1, 'name' => 'John', 'age' => 31];

$differences = array_diff_assoc($updated_user_info, $current_user_info);

if (!empty($differences)) {
    echo '변경된 데이터가 있습니다. 변경된 정보: ';

    foreach ($differences as $key => $value) {
        echo "$key: $value ";
    }
} else {
    echo '변경된 데이터가 없습니다.';
}
// 출력: '변경된 데이터가 있습니다. 변경된 정보: age: 31'

/* 연관 배열에서 특정 값 제거하기 */
$original_array = ['id' => 1, 'name' => 'John', 'age' => 30];

$value_to_remove = 'John';

$result = array_diff_assoc($original_array, ['name' => $value_to_remove]);
print_r($result); // Array ( [id] => 1 [age] => 30 )
array_diff_assoc(array $array_1, array_2, $array_3, ...): array
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['a' => 1, 'b' => 2, 'c' => 3];

$result = array_diff_assoc($array1, $array2);
print_r($result); // Array ( )
$array1 = ['a' => 1, 'b' => 2, 'c' => 3, 'b' => 2];

$unique = array_diff_assoc($array1);
print_r($unique);
/* 출력:
	Array
	(
	    [a] => 1
	    [b] => 2
	    [c] => 3
	)
*/
$array1 = ['a' => 1, 'b' => 2, 'c' => 3, 'b' => 2];

$unique = array_unique($array1);
print_r($unique);
/* 출력:
	Array (
	 [a] => 1
	 [b] => 2
	 [c] => 3
	)
*/
$array1 = ['a' => 1, 'b' => 2, 'c' => '3'];  // '3'은 문자열로 저장
$array2 = ['a' => 1, 'b' => 2, 'c' => 3];    // 3은 정수로 저장

$differences = array_diff_assoc($array1, $array2);

print_r($differences) // Array ( )
$current_permissions = ['read' => true, 'write' => true, 'execute' => false];
$required_permissions = ['read' => true, 'write' => true, 'execute' => true];

$missing_permissions = array_diff_assoc($required_permissions, $current_permissions);

if (!empty($missing_permissions)) {
    echo '사용자는 다음 권한이 부족합니다: ' . implode(', ', array_keys($missing_permissions));
} else {
    echo '권한이 충분합니다.';
}

// 출력: '사용자는 다음 권한이 부족합니다: execute'
$all_options = ['apple' => 1, 'banana' => 2, 'cherry' => 3, 'date' => 4];
$selected_options = ['banana' => 2, 'date' => 4];

$remaining_options = array_diff_assoc($all_options, $selected_options);

echo '선택하지 않은 옵션: ' . implode(', ', array_keys($remaining_options));
// 출력: '선택하지 않은 옵션: apple, cherry'
$committed_files = [
    'file1.txt' => 'hash1',
    'file2.txt' => 'hash2',
    'file3.txt' => 'hash3'
];

$modified_files = [
    'file1.txt' => 'hash1',
    'file3.txt' => 'hash3',
    'file4.txt' => 'hash4'
];

$new_files = array_diff_assoc($modified_files, $committed_files);

if (!empty($new_files)) {
    echo '변경된 파일 목록: ' . implode(', ', array_keys($new_files));
} else {
    echo '변경된 파일이 없습니다.';
}

// 출력: '변경된 파일 목록: file4.txt'