ホームページ > バックエンド開発 > PHPチュートリアル > 2D 配列を比較するときに「array_diff_assoc()」に共通の行が含まれるのはなぜですか?

2D 配列を比較するときに「array_diff_assoc()」に共通の行が含まれるのはなぜですか?

Barbara Streisand
リリース: 2024-10-26 06:06:02
オリジナル
911 人が閲覧しました

Why Does `array_diff_assoc()` Include Common Rows When Comparing 2D Arrays?

別の配列を使用して 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート