ホームページ >バックエンド開発 >PHPチュートリアル >多次元配列内で異なる入れ子になった配列を見つけるにはどうすればよいですか?

多次元配列内で異なる入れ子になった配列を見つけるにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-16 14:19:03896ブラウズ

How to Find Dissimilar Nested Arrays within Multidimensional Arrays?

多次元配列内の異なる入れ子になった配列の検索

情報の連想行を含む次の 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)));
  1. array_map('serialize', $pageids): $pageids 内の各サブ配列を構造を表す文字列。
  2. array_map('serialize', $parentpage): と同じプロセス$parentpage.
  3. array_diff(): 文字列表現を比較し、相違点の配列を返します。
  4. array_map('unserialize', ...): 文字列の相違点をサブ配列に変換します。

結果の $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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。