別の配列を使用して 2D 配列の行をフィルタリングする
2 つの 2D 配列があり、array_diff_assoc() を使用してその中の一意の行を識別しようとしています。最初の配列は 2 番目の配列には存在しません。ただし、結果に共通の行が含まれるという問題が発生します。
この問題は、array_diff_assoc() が値を比較する方法に起因します。厳密な文字列比較が実行されます。つまり、値が等しいとみなされるには、型と値の両方が同一である必要があります。指定された例では:
<code class="php">$array1 = [ [12 => 'new q sets'], [11 => 'common set'] ]; $array2 = [ [11 => 'common set'] ];</code>
array_diff_assoc($array1, $array2) が呼び出されるとき、両方の配列の文字列表現は「Array」です。したがって、$array1 の追加行 ([12] => 'new q set') に基づいて差分が検出されます。その結果、共通の行 ([11] => 'common set') が差分に含まれます。
この問題を解決するには、別の比較アプローチの使用を検討してください。配列内のデータが数値であるか、数値に変換できる場合は、array_diff_uassoc() を使用できます。これにより、カスタム比較関数を指定できます。あるいは、両方の配列を反復処理して値が等しいかどうかを確認することで、行を手動でフィルターすることもできます。
以上が2D 配列を比較するときに「array_diff_assoc()」に共通の行が含まれるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。