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;
array_diff の例
"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つの要素は等しいとみなされます。
型が一致しない場合の array_diff の例
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