array_diff 配列の差を計算する &reftitle.description; arrayarray_diff arrayarray arrayarrays array を他の配列と比較し、 array の要素の中で他の配列には存在しないものだけを返します。 &reftitle.parameters; array 比較元の配列。 arrays 比較対象の配列。 &reftitle.returnvalues; array のエントリのうち、他のどの配列にも含まれない要素のみを含む配列を返します。 array の配列のキーは維持されます。 &reftitle.changelog; &Version; &Description; &array.changelog.require-only-one; &reftitle.examples; <function>array_diff</function> の例 "green", "red", "blue", "red"); $array2 = array("b" => "green", "yellow", "red"); $result = array_diff($array1, $array2); print_r($result); ?> ]]> $array1 に複数存在する場合でも全て同様に処理されます。 この出力は次の通りです。 blue ) ]]> (string) $elem1 === (string) $elem2 の場合のみ、 つまり、文字列表現 が同等な場合のみ、 2つの要素は等しいとみなされます。 型が一致しない場合の <function>array_diff</function> の例 v = $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') のインスタンスが一つ含まれます。 var_dump($result); ?> ]]> 別の比較関数を使いたい場合は、array_udiff を参照ください。 &reftitle.notes; この関数は n 次元配列の一つの次元しかチェックしません。 もちろん、array_diff($array1[0], $array2[0]); のようにすることでより深い次元でのチェックもできます。 &reftitle.seealso; array_diff_assoc array_udiff array_intersect array_intersect_assoc