[英]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.