/* 배열들의 중복된 값을 제거하기 */
$array1 = ['apple', 'banana', 'orange']; // 비교 대상이 되는 배열
$array2 = ['banana', 'apple', 'grape'];

$result = array_diff($array1, $array2);
print_r($result);
// Array ( [2] => orange ) => 반환된 배열의 키는 비교 대상이 되는 원래 배열에서의 키가 그대로 보존

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

$differences = array_diff($updatedUser_info, $currentUser_info);

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

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

/* 특정 값 제거하기 */
$original_array = ['apple', 'banana', 'orange'];

$result = array_diff($original_array, ['banana']);
print_r($result); // Array ( [0] => apple [2] => orange )
array_diff(array $array_1, array_2, $array_3, ...): array
$array1 = ['apple', 'banana', 'orange'];
$array2 = ['banana', 'apple', 'orange'];

$result = array_diff($array1, $array2);
print_r($result); // Array ( )
$array1 = [1, 2, 3, 3, 4, 5, 5];

$unique = array_diff($array1);
print_r($unique);
/* 출력:
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 3
    [4] => 4
    [5] => 5
    [6] => 5
)
*/
$array = [1, 2, 3, 3, 4, 5, 5];

$unique = array_unique($array);
print_r($unique);
/* 출력:
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)
*/
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['x' => 1, 'y' => 2, 'z' => 3];

$result = array_diff($array1, $array2);
print_r($result); // 출력: Array ( )
$array1 = [1, 2, '3'];  // '3'은 문자열로 저장
$array2 = [1, 2, 3];    // 3은 정수로 저장

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

print_r($differences); // Array ( )
$user_permissions = ['read', 'write', 'delete'];
$required_permissions = ['read', 'execute'];
$missing_permissions = array_diff($required_permissions, $user_permissions);

if (empty($missing_permissions)) {
    echo "사용자는 필요한 모든 권한을 가지고 있습니다.";
} else {
    echo "사용자는 다음 권한이 부족합니다: " . implode(', ', $missing_permissions);
}

// 출력: '사용자는 다음 권한이 부족합니다: execute'
$all_options = ['apple', 'banana', 'cherry', 'date'];
$selected_options = ['banana', 'date'];
$remaining_options = array_diff($all_options, $selected_options);

echo '선택하지 않은 옵션: ' . implode(', ', $remaining_options);
// 출력: '선택하지 않은 옵션: apple, cherry'
$raw_data = ['apple', 'banana', '', 'date', null, 'cherry'];
$cleaned_data = array_diff($raw_data, ['', null]);

print_r($cleaned_data);
// 출력: Array ( [0] => apple [1] => banana [3] => date [5] => cherry )
$committed_files = ['file1.php', 'file2.php', 'file3.php'];
$modified_files = ['file2.php', 'file3.php', 'file4.php'];
$new_files = array_diff($modified_files, $committed_files);

echo '새로운 파일: ' . implode(', ', $new_files);
// 출력: '새로운 파일: file4.php'