現在の位置: ホーム> 最新記事一覧> array_diff()とarray_diff_assoc()の違いを理解する

array_diff()とarray_diff_assoc()の違いを理解する

M66 2025-05-13

PHPでは、 array_diff()array_diff_assoc()は、配列を比較するために2つの一般的に使用される関数です。それらの機能は、アプリケーションシナリオの機能と多少似ていますが、特定の比較にはいくつかの大きな違いがあります。これら2つの機能の違いを理解することは、実際の開発でアレイデータをより正確に処理するのに役立ちます。

1。関数の紹介

  1. array_diff()
    array_diff()は、最初の配列では2つ以上の配列と戻り値を比較するために使用されますが、他の配列では使用されません。キー名に関係なく、値に基づいて比較されます。

    文法:

     array_diff(array $array1, array $array2, array ...$arrays): array
    

    例:

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

    出力:

     Array
    (
        [0] => 1
        [3] => 4
    )
    

    この例では、 array_diff()は$ array1$ array2の値を比較し、結果は$ array1に存在するが、 $ array2には存在しない値です。

  2. array_diff_assoc()
    array_diff_assoc()の関数はarray_diff()に似ていますが、比較時に値を考慮するだけでなく、キー名(キー)も比較します。つまり、値とキー名が等しくない要素のみが異なると見なされます。

    文法:

     array_diff_assoc(array $array1, array $array2, array ...$arrays): array
    

    例:

     $array1 = [1 => "apple", 2 => "banana", 3 => "cherry"];
    $array2 = [1 => "apple", 2 => "grape"];
    
    $result = array_diff_assoc($array1, $array2);
    print_r($result);
    

    出力:

     Array
    (
        [2] => banana
        [3] => cherry
    )
    

    この例では、 array_diff_assoc()は、 $ array1$ array2の値とキー名を比較します。 1 => "Apple"は両方の配列で同じですが、 array_diff_assoc()はこの要素を無視し、異なるキー名と対応する値を持つ要素を探し続けます。したがって、 2 =>「バナナ」3 =>「チェリー」は異なると見なされます。

2。違いの概要

関数比較基準適用可能なシナリオ
array_diff()値を比較するだけで、キー名は考慮されません値に基づいて比較が必要なシナリオと、配列キー名の違いを無視する
array_diff_assoc()値とキー名を比較しますアレイ構造の整合性比較、またはキー名が一貫している必要があるシナリオなど、値とキー名を比較する必要があるシナリオ

3.シナリオを使用します

  1. array_diff()を使用したシナリオ:
    配列の値のみを気にし、キー名を気にしない場合は、 array_diff()を使用できます。たとえば、さまざまな製品IDを含む2つのリストがあり、製品IDが配列内の位置やキー名についてではなく、製品IDが一貫しているかどうかのみを気にします。

    サンプルシナリオ:
    たとえば、2つの製品リストに重複しない製品IDを見つけるには、コードは次のとおりです。

     $list1 = [101, 102, 103, 104];
    $list2 = [102, 104, 105];
    
    $unique_ids = array_diff($list1, $list2);
    print_r($unique_ids);
    

    出力:

     Array
    (
        [0] => 101
        [2] => 103
    )
    
  2. array_diff_assoc()を使用したシナリオ:
    配列の値を比較するだけでなく、キー名の一貫性を確保する必要がある場合は、 array_diff_assoc()を使用できます。たとえば、2つのユーザーリストでは、キー名はユーザーのIDを表し、値はユーザーの情報を表します。各ユーザーのIDと対応する情報が一貫していることを確認する必要があります。

    サンプルシナリオ:
    たとえば、2つのユーザー情報配列を比較して、異なるキー名と値のアイテムを見つけます。

     $users1 = [1 => "Alice", 2 => "Bob", 3 => "Charlie"];
    $users2 = [1 => "Alice", 2 => "Eve", 4 => "David"];
    
    $diff_users = array_diff_assoc($users1, $users2);
    print_r($diff_users);
    

    出力:

     Array
    (
        [2] => Bob
        [3] => Charlie
    )
    

4。概要

  • array_diff()は、キー名の違いを無視して、配列値が同じかどうかを気にするシナリオに適しています。

  • array_diff_assoc()は、キー名と値が一貫しているかどうかを検討する必要がある場合に適用可能です。

これら2つの機能間の違いと使用法のシナリオを理解することで、実際のアプリケーションで不必要なエラーを回避するために、開発に最適な機能を選択するのに役立ちます。