簡體   English   中英

PHP從兩個數組創建關聯數組

[英]PHP Create Associative Array from two arrays

我需要通過將第一個數組中的“ cat_id”與第二個數組中的“ parent_id”匹配,將第二個數組推入第一個數組。

我有第一個數組-$ categories:

[
  {
    "cat_id": "350",
    "parent_id": "0",
    "cat_name": "Category 1"
  }
]

第二個數組-$ topics:

[
  {
    "cat_id": "351",
    "parent_id": "350",
    "cat_name": "Topic 1",
  },
  {
    "cat_id": "352",
    "parent_id": "350",
    "cat_name": "Topic 2",
  }
]

我想要這個:

[
  {
    "cat_id": "350",
    "parent_id": "0",
    "cat_name": "Category 1",
    "topics": [
        {
          "cat_id": "351",
          "parent_id": "350",
          "cat_name": "Topic 1",
        },
        {
          "cat_id": "352",
          "parent_id": "350",
          "cat_name": "Topic 2",
        }
    ]
  }
]

我在想嵌入的foreach循環可能是答案,但仍在篩選所有PHP數組函數以嘗試找出是否有一個現成的函數可以做到這一點: http : //php.net/manual/ zh / ref.array.php

簡短的答案是:

foreach ( $categories AS &$category ) {
  foreach ( $topics AS $topic ) {
    if ( $category[ 'cat_id' ] == $topic[ 'parent_id' ] ) {
      $category[ 'topics' ][] = $topic;
    }
  }
}

這個完整的腳本應該(我希望)展示您所追求的行為。

<?php

$categories = array(
    [
      "cat_id" => "350",
      "parent_id" => "0",
      "cat_name" => "Category 1",
      "topics" => []
    ]
  );

$topics = array (
    [
      "cat_id" => "351",
      "parent_id" => "350",
      "cat_name" => "Category 1 Topic 1",
    ],
    [
      "cat_id" => "352",
      "parent_id" => "350",
      "cat_name" => "Category 1 Topic 2",
    ]
  );

foreach ( $categories AS &$category ) {
  foreach ( $topics AS $topic ) {
    if ( $category[ 'cat_id' ] == $topic[ 'parent_id' ] ) {
      $category[ 'topics' ][] = $topic;
    }
  }
}

echo '<pre>';
print_r( $categories );
echo '</pre>';

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM