繁体   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