ホームページ >バックエンド開発 >PHPチュートリアル >PHP で 2 次元配列の連想行を比較するにはどうすればよいですか?

PHP で 2 次元配列の連想行を比較するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-09 13:54:02387ブラウズ

How to Compare Associative Rows of 2-Dimensional Arrays in PHP?

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

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