我需要将一个单一的数组根据数组键中出现
另外,如果存在同名的子项,则在具有不同父项的情况下被视为唯一。
我的源数组结构如下:
在上面的例子中,
>
的次数来分成子数组,以此来确定哪些是父类别,哪些不是。请注意,可能有无限多个嵌套的父级。另外,如果存在同名的子项,则在具有不同父项的情况下被视为唯一。
我的源数组结构如下:
array (
'Test Parent 2>Test Child>Test Sub Child' =>
array (
'content_id_4' => NULL,
),
'Test Parent 3' =>
array (
'content_id_4' => NULL,
'content_id_5' => NULL,
),
'Test Parent>Test Child>Test Sub Child' =>
array (
'content_id_3' => NULL,
),
'Test Parent 2 with No Kids' =>
array (
'content_id_3' => NULL,
),
'Collections>Sports' =>
array (
'content_id_2' => NULL,
'content_id_22' => NULL,
),
'Collections' =>
array (
'content_id_2' => NULL,
'content_id_22' => NULL,
'content_id_6' => NULL,
),
'Collections>Charity' =>
array (
'content_id_6' => NULL,
),
)
在上面的例子中,
Test Parent>Test Child>Test Sub Child
意味着有一个名为 Test Parent
的父类别,其下有一个子类别 Test Child
。 Test Child
也是一个父类别,其下有一个名为 Test Sub Child
的子类别,它没有任何子类别。array (
'Collections' =>
array (
'Sports' => NULL,
'Charity' => NULL,
),
'Test Parent' =>
array (
'Test Child' =>
array (
'Test Sub Child' => NULL,
),
),
'Test Parent 2 with No kids' => NULL,
'Study' =>
array (
'Study Groups' => NULL,
),
)
我尝试了一个解决方案,但无法正确地获取语法,以便我可以创建一个具有子级孙子的额外数组。
我不一定需要重构我的示例。我只是在寻找最好的可行解决方案。
我的示例代码:
$category_structure = array();
foreach($event_categories as $main_cat => $content_ids) {
$this_category_list = explode('>', $main_cat);
$this_cat = array();
$this_parent = array_shift($this_category_list);
foreach($this_category_list as $cat) {
$this_cat[$this_parent][$cat] = null;
}
$category_structure = array_merge_recursive($this_cat, $category_structure);
}
var_dump()
,考虑发布它的var_export()
。 - nickb