ホームページ >バックエンド開発 >PHPチュートリアル >array_diff_assoc() が固有の要素ではなく共通の要素を返すのはなぜですか?
array_diff_assoc() を使用した配列フィルタリング
PHP では、array_diff_assoc() は配列を比較し、相違点を識別するのに便利な関数です。ただし、結果の出力に予期される固有の要素ではなく共通の要素が含まれるという問題が発生する可能性があります。
これを理解するために、array_diff_assoc() の動作を詳しく調べてみましょう。この関数は、キーと値のペア間の厳密な等価比較を実行します。これは、要素の文字列表現が比較のために同一である必要があることを意味します。
次の例を考えてみましょう:
<code class="php">$array1 = [ [12 => 'new q sets'], [11 => 'common set'] ]; $array2 = [ [11 => 'common set'] ];</code>
array_diff_assoc() がこれらの配列に適用されると、以下が比較されます:
Array ([0] => "Array" [1] => "Array") Array ([0] => "Array")
キーと値のペアが同一ではないため、比較では最初の配列 ([1] => Array( [11] => common set )) から [1] 要素が返されます。これは、共通の要素が含まれているため、望ましい結果ではありません。
この問題を解決するには、ユーザーはキーと値のペアの文字列表現が両方の配列で同一であることを確認する必要があります。これは、一貫した形式またはデータ型を使用することで実現できます。さらに、値を文字列にキャストすると (例: (string) $element)、厳密な等価比較を保証するのに役立ちます。
以上がarray_diff_assoc() が固有の要素ではなく共通の要素を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。