PHPバージョン
4.3+
/* 他の配列とキー(Key)と値(Value)のペアが同一の要素を除外する */
$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 )

<br>

/* 連想配列間の差異(difference)を確認する */
$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'

<br>

/* 特定のキーと値のペアを基準に連想配列から要素を削除する */
$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 ( )
$array = ['a' => 1, 'b' => 2, 'c' => 3];

$result = array_diff_assoc($array);
print_r($result);

/* 出力:
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 ( )
$array1 = array(0, 1, 2);           // 整数 0, 1, 2
$array2 = array('00', '01', '2');   // 文字列 '00', '01', '2'

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

print_r($result);
/* 出力:
Array
(
    [0] => 0
    [1] => 1
)
*/
$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'