配列2に存在しない配列1のすべてのメンバーを取得する組み込み関数はありますか?
。したがって、コード例はありません。
それは array_diff
。
他の配列に存在しないarray1のすべてのエントリを含む配列を返します。
array_diffは間違いなく明白な選択ですが、技術的には配列の交差の反対ではありません。次の例をご覧ください。
$arr1 = array('rabbit','cat','dog');
$arr2 = array('cat','dog','bird');
print_r( array_diff($arr1, $arr2) );
必要なのは「rabbit」と「bird」を含む結果ですが、最初の配列ではなく2番目の配列ではなく(逆の場合はない)配列を検索するため、取得できるのはウサギのみです。本当に望む結果を得るには、次のようなことをしなければなりません:
$arr1 = array('rabbit','cat','dog');
$arr2 = array('cat','dog','bird');
$diff1 = array_diff($arr1, $arr2);
$diff2 = array_diff($arr2, $arr1);
print_r( array_merge($diff1, $diff2) );
注:このメソッドは、数値キーを持つ配列でのみ機能します。
$diff = array_diff($array1, $array2);
私はこれを見つけました docstore.mik.ua/orelly/webprog/pcook/ch04_24.htm 非常に便利です。
標準diffの配列の順序を逆にすることで、逆diffが必要になる場合があります。
この質問を検討していたときに明確にするために、@ Jonと@Dallas Caleyの答えは両方とも、配列のドメインに応じて正しいです。
比較対象の配列が結果の完全なドメインである場合、@ Jonの回答に従って、単純なarray_diffで十分です。
比較対象の配列が結果の完全な領域ではない場合は、@ Dallas Caleyの回答に従ってdouble array_diffを使用する必要があります。