ホームページ >バックエンド開発 >PHPチュートリアル >PHP で 2 次元配列の連想行を比較するにはどうすればよいですか?
2 次元配列の連想行の比較: 総合ガイド
多次元配列は、PHP でデータを編成する強力な方法です。しかし、それらを比較するのは難しい場合があります。この質問では、array_diff_assoc() 関数を使用して 2 つの 2 次元配列の連想行を効果的に比較する方法を検討します。
課題:
目的は、 $parentpage に存在しない $pageid の行。 array_diff_assoc() 関数は連想配列を比較するように設計されていますが、ネストされた行を無視して配列の最初のレベルで動作します。
問題:
提供されたコード:
$pageWithNoChildren = array_diff_assoc($pageids,$parentpage);
はネストされた行を無視し、最初のレベルのキーのみを考慮するため、間違った結果を返します。
解決策:
提案された解決策には、serialize() を使用して各サブ配列を文字列表現に変換することが含まれます。これにより、多次元配列が 1 次元配列に変換されます:
$diff = array_diff(array_map('serialize', $pageids), array_map('serialize', $parentpage));
その後、差分は unserialize() を使用して部分配列に変換されます:
$pageWithNoChildren = array_map('unserialize', $diff);
このメソッドは効果的に行われます。ネストされた行の内容を比較し、次の予想される出力が得られます:
array ( 0 => array ( 'id' => 1, 'linklabel' => 'Home', 'url' => 'home', ), 3 => array ( 'id' => 6, 'linklabel' => 'Logo Design', 'url' => 'logodesign', ), 4 => array ( 'id' => 15, 'linklabel' => 'Content Writing', 'url' => 'contentwriting', ), )
以上がPHP で 2 次元配列の連想行を比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。