array_diff

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

array_diff配列の差を計算する

説明

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

array を他の配列と比較し、 array の要素の中で他の配列には存在しないものだけを返します。

パラメータ

array

比較元の配列。

arrays

比較対象の配列。

戻り値

array のエントリのうち、他のどの配列にも含まれない要素のみを含む配列を返します。 array の配列のキーは維持されます。

例1 array_diff() の例

<?php
$array1 
= array("a" => "green""red""blue""red");
$array2 = array("b" => "green""yellow""red");
$result array_diff($array1$array2);

print_r($result);
?>

$array1 に複数存在する場合でも全て同様に処理されます。 この出力は次の通りです。

Array
(
    [1] => blue
)

例2 型が一致しない場合の array_diff() の例

(string) $elem1 === (string) $elem2 の場合のみ、 つまり、文字列表現 が同等な場合のみ、 2つの要素は等しいとみなされます。

<?php
// 以下の例は、配列が文字列にキャストできないので警告が発生します
$source = [1234];
$filter = [34, [5], 6];
$result array_diff($source$filter);

// 一方で、以下の例は問題ありません。なぜなら、オブジェクトは文字列にキャストできるからです。
class {
  private 
$v;

  public function 
__construct(string $v) {
    
$this->$v;
  }

  public function 
__toString() {
    return 
$this->v;
  }
}

$source = [new S('a'), new S('b'), new S('c')];
$filter = [new S('b'), new S('c'), new S('d')];

$result array_diff($source$filter);

// $result には、S('a') のインスタンスが一つ含まれます。
?>

別の比較関数を使いたい場合は、array_udiff() を参照して下さい。

注意

注意:

この関数は n 次元配列の一つの次元しかチェックしません。 もちろん、array_diff($array1[0], $array2[0]); のようにすることでより深い次元でのチェックもできます。

参考

関連キーワード:  array, 配列, 計算, , 比較, 関数, 次元, 要素, 確認, 添字