多次元配列の連想行の比較
$pageids と $parentpage という 2 つの多次元配列があり、各行は列を持つレコードを表します「id」、「リンクラベル」、「url」。 $pageids には存在するが $parentpage には存在しない行を検索し、欠落している行を含む配列 ($pageWithNoChildren) を効率的に作成したいとします。
ただし、これらの配列に対して array_diff_assoc() を直接使用しても期待どおりに機能しません。これは、ネストされた行の内容ではなく、主配列キーを比較するためです。ネストされた行を比較するには、最初に array_map() と Serialize() 関数を使用してそれらを 1 次元配列に変換します。
$serializedPageids = array_map('serialize', $pageids); $serializedParentpage = array_map('serialize', $parentpage);
それらを変換した後、array_diff() を使用してこれらを比較できます。
$serializedDifference = array_diff($serializedPageids, $serializedParentpage);
最後に、array_map() 関数と unserialize() 関数を使用して、シリアル化された差分を多次元配列に変換できます。
$pageWithNoChildren = array_map('unserialize', $serializedDifference);
これこのプロセスにより、ネストされた行の内容を比較し、$pageids には存在するが $parentpage には存在しない行を抽出でき、期待される出力が得られます:
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 サイトの他の関連記事を参照してください。