PHPバージョン
4.3+
/* 他の配列とキー(Key)と値(Value)のペアがすべて同一の共通要素を見つける */
$array1 = ['a' => 1, 'b' => 2, 'c' => 3]; // 比較基準となる配列
$array2 = ['b' => 2, 'c' => 3, 'd' => 4];

$result = array_intersect_assoc($array1, $array2);
print_r($result); // Array ( [b] => 2 [c] => 3 )

/* 連想配列間の共通要素(intersection)の確認 */
$current_user_info = ['id' => 1, 'name' => 'John', 'age' => 30];
$updated_user_info = ['id' => 1, 'name' => 'John', 'age' => 31];

$common = array_intersect_assoc($updated_user_info, $current_user_info);

if (!empty($common)) {
    echo '共通して維持されているデータがあります:';

    foreach ($common as $key => $value) {
        echo "$key: $value ";
    }
} else {
    echo '共通データがありません。';
}
// 出力:'共通して維持されているデータがあります:id: 1 name: John'

/* 特定のキーと値のペアを基準に、連想配列から共通要素のみを抽出する */
$original_array = ['id' => 1, 'name' => 'John', 'age' => 30];

$criteria = ['name' => 'John'];

$result = array_intersect_assoc($original_array, $criteria);
print_r($result); // Array ( [name] => John )
array_intersect_assoc(array $array_1, $array_2, $array_3, ...): array
$array1 = ["a" => 1, "b" => 2, "c" => 3];
$array2 = ["b" => 3, "c" => 4, "d" => 5];

$common_elements = array_intersect_assoc($array1, $array2);

print_r($common_elements); // Array ( )
$array = ["a" => 1, "b" => 2, "c" => 3];

$result = array_intersect_assoc($array);

print_r($result);
/* Output:
Array
(
    [a] => 1
    [b] => 2
    [c] => 3
)
*/
$array1 = ['a' => 1, 'b' => 2, 'c' => '3'];  // '3'は文字列として保存
$array2 = ['a' => 1, 'b' => 2, 'c' => 3];    // 3は整数として保存

$intersect = array_intersect_assoc($array1, $array2);

print_r($intersect);
/* 出力:
Array
    (
        [a] => 1
        [b] => 2
        [c] => 3
    )
*/
$array1 = array(0, 1, 2);           // 整数 0, 1, 2
$array2 = array('00', '01', '2');   // 文字列 '00', '01', '2'

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

print_r($result);
/* 出力:
Array
(
    [2] => 2
)
*/
$products = [
    ['id' => 1, 'name' => 'Laptop',     'brand' => 'Dell',     'price' => 1200],
    ['id' => 2, 'name' => 'Smartphone', 'brand' => 'SONY', 'price' => 800],
    ['id' => 3, 'name' => 'Tablet',     'brand' => 'Apple',   'price' => 600],
    ['id' => 4, 'name' => 'Smartwatch', 'brand' => 'Fitbit',  'price' => 150],
];

// ユーザーが選択したフィルター条件
$filter_criteria = ['brand' => 'SONY', 'price' => 800];

// ユーザーが選択した条件と一致する商品を探す
$filtered_products = [];
foreach ($products as $product) {
    if (count(array_intersect_assoc($product, $filter_criteria)) === count($filter_criteria)) {
        $filtered_products[] = $product;
    }
}

// 結果出力
print_r($filtered_products);
/*
Array
(
    [0] => Array
        (
            [id] => 2
            [name] => Smartphone
            [brand] => SONY
            [price] => 800
        )
)
*/
// 2人のユーザーの情報
$user_1 = [
    'id' => 1,
    'username' => 'john_doe',
    'email' => 'john@example.com',
    'age' => 30,
];

$user_2 = [
    'id' => 2,
    'username' => 'jane_smith',
    'email' => 'jane@example.com',
    'age' => 28,
];

// 2人のユーザーの情報で同一のキーと値があるかを確認する関数
function has_matching_info($user_1, $user_2) {
    $matching_info = array_intersect_assoc($user_1, $user_2);

    // 同一のキーと値がある場合に返す
    return !empty($matching_info);
}

// 結果出力
if (has_matching_info($user_1, $user_2)) {
    echo '2人のユーザーの情報で一致する内容があります。';
} else {
    echo '2人のユーザーの情報で一致する内容がありません。';
}

// 出力: '2人のユーザーの情報で一致する内容がありません。'
// ユーザー1のプログラミング言語の好み
$user1_languages = [
    'Python' => 4,
    'JavaScript' => 5,
    'Java' => 3,
];

// ユーザー2のプログラミング言語の好み
$user2_languages = [
    'JavaScript' => 5,
    'Java' => 4,
    'PHP' => 2,
];

// 2人のユーザーのプログラミング言語の好みの中で、同一の言語を探す関数
function find_matching_languages($languages1, $languages2) {
    $matching_languages = array_intersect_assoc($languages1, $languages2);

    return $matching_languages;
}

// 結果出力
$matching_languages = find_matching_languages($user1_languages, $user2_languages);

if (!empty($matching_languages)) {
    echo '2人のユーザーが同一のプログラミング言語を好んでいます。('
         . implode(', ', array_keys($matching_languages)) . ')';
} else {
    echo '2人のユーザーが同一のプログラミング言語を好んでいません。';
}

// 出力: 2人のユーザーが同一のプログラミング言語を好んでいます。(JavaScript)