ホームページ > バックエンド開発 > PHPチュートリアル > ある多次元配列には存在するが、別の多次元配列には存在しない行を検索するにはどうすればよいですか?

ある多次元配列には存在するが、別の多次元配列には存在しない行を検索するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-09 09:39:02
オリジナル
872 人が閲覧しました

How to Find Rows Present in One Multidimensional Array but Not in Another?

多次元配列の連想行の比較

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート