PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのarray_diff()関数をわかりやすく解説!配列の差分を取得する方法

PHPには、特定の機能を持つ組み込み関数が多数用意されています。その中でもarray_diff()は、事前に定義された便利な関数の一つで、2つ以上の配列同士の差分(違い)を求めるために使用されます。

この関数に2つの配列を渡すと、最初の配列に存在するが、他の配列には存在しない要素だけを含む新しい配列が返されます。比較は配列内の「値」に基づいて行われる点が特徴です。

基本的な使い方

array_diff()の構文は以下のとおりです。

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

第1引数に基準となる配列、第2引数以降に比較対象の配列を指定します。戻り値として、第1引数の配列から、他の配列に含まれる値を除いた要素のみを持つ配列が返されます。

サンプルコード

<?php
    $myarray1 = array('c', 'd', 'j', 'k', 'c', 'd', 'c');
    $myarray2 = array('j', 'k', 'd');
    print_r(array_diff($myarray1, $myarray2));
?>

実行結果

Array
(
    [0] => c
    [4] => c
    [6] => c
)

この例では、$myarray1の中で$myarray2に含まれていない値「c」だけが出力されています。注目すべきは、元の配列でのキー(インデックス)が保持されているという点です。「d」や「j」「k」は$myarray2にも存在するため、結果から除外されています。

注意点

文字列として比較される

array_diff()は、要素を文字列表現に変換した上で比較します。そのため、数値の 2 と文字列の '2' は同じものとして扱われます。厳密な型まで比較したい場合は、代わりに array_udiff() を使うとよいでしょう。

重複回数の扱い

要素が最初の配列に複数回出現し、比較対象の配列に1回しか出現しない場合でも、その要素はすべて結果から除外されます。つまり、出現回数ではなく「値の有無」だけで判定される点に注意が必要です。

まとめ

array_diff()は、複数の配列から差分を簡単に抽出できる便利な関数です。キーが保持されること、文字列として比較されること、重複の扱いについて理解しておくことで、意図しないバグを防ぎ、より安全に活用できます。

  1. PHPのarray_diff()関数とは?構文・パラメータ・サンプルコードで解説

    PHPのarray_diff()関数は、複数の配列の値を比較し、その差分を求めるための関数です。最初の配列に含まれていて、他の配列のいずれにも存在しない要素だけを集めた新しい配列を返します。 基本仕様 比較されるのは「値」のみで、「キー」は比較対象になりません。 返される配列には、元の配列(最初の引数)のキーと値のペアがそのまま保持されます。 値の比較は文字列として行われます。 構文 array_diff(arr1, arr2, arr3, arr4, …) パラメータ arr1 − 比較元となる基準の配列。必須。 arr2 − 比較対象となる配列。必須。 arr3 − 追加で比較したい

  2. PHPのarray()関数とは?配列の作成方法をわかりやすく解説

    PHPのarray()関数は、配列を作成するための関数です。PHPにおける配列には、主に以下の3種類が存在します。インデックス配列 − 数値インデックス(0から始まる番号)で要素を管理する配列連想配列 − 文字列などの名前付きキーで要素を管理する配列多次元配列 − 配列の中に1つ以上の配列を含む、入れ子構造の配列構文// 数値インデックスを持つ配列(インデックス配列) array(value1, value2, ...); // 名前付きキーを持つ配列(連想配列) array(key1 => value1, key2 => value2, ...)パラメータvalue − 配列に