ホームページ >バックエンド開発 >PHPチュートリアル >多次元配列内で異なる入れ子になった配列を見つけるにはどうすればよいですか?
多次元配列内の異なる入れ子になった配列の検索
情報の連想行を含む次の 2 つの配列を考えてみましょう:
$pageids = [ ['id' => 1, 'linklabel' => 'Home', 'url' => 'home'], ['id' => 2, 'linklabel' => 'Graphic Design', 'url' => 'graphicdesign'], ['id' => 3, 'linklabel' => 'Other Design', 'url' => 'otherdesign'], ['id' => 6, 'linklabel' => 'Logo Design', 'url' => 'logodesign'], ['id' => 15, 'linklabel' => 'Content Writing', 'url' => 'contentwriting'], ]; $parentpage = [ ['id' => 2, 'linklabel' => 'Graphic Design', 'url' => 'graphicdesign'], ['id' => 3, 'linklabel' => 'Other Design', 'url' => 'otherdesign'], ];
私たちのタスクは、以下に存在する関連行を識別して返すことです。 $pageids ですが、$parentpage には存在しません。ただし、これらの配列の最初のレベルで array_diff_assoc() を使用しても、望ましい結果は得られません。
この課題を克服するには、array_map() 関数と Serialize() 関数を組み合わせて利用できます。このアプローチは、各サブ配列を文字列表現に変換し、多次元構造を効率的に平坦化します。
$pageWithNoChildren = array_map('unserialize', array_diff(array_map('serialize', $pageids), array_map('serialize', $parentpage)));
結果の $pageWithNoChildren 配列には、次のサブ配列が含まれます。 $parentpage に存在しない $pageid:
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 中国語 Web サイトの他の関連記事を参照してください。