【发布时间】:2016-03-17 00:33:19
【问题描述】:
我会创建一个递归函数,以便从数组中检索数据并进行组织。 但是,我在创建正确的逻辑时遇到了一些困难。该原则必须适用于任何子级别,直到它结束或找不到任何东西。 我想通过在 foreach 中重复 foreach 来防止这种代码...:
$cats = get_categories($args);
$categories = array();
foreach($cats as $cat){
$parent = $cat->category_parent;
if ($parent) {
$categories['child'][$parent][$cat->cat_ID] = $cat->name;
} else {
$categories['parent'][$cat->cat_ID] = $cat->name;
}
}
}
if (isset($categories['parent']) && !empty($categories['parent'])) {
foreach($categories['parent'] as $id => $cat){
$new_cats[$id]['title'] = $cat;
if (isset($categories['child'][$id])) {
foreach($categories['child'][$id] as $child_id => $child_cat){
$new_cats[$child_id]['title'] = $child_cat;
$new_cats[$child_id]['parent_id'] = $id;
if (isset($categories['child'][$child_id])) {
foreach($categories['child'][$child_id] as $sub_child_id => $sub_child_cat){
$new_cats[$sub_child_id]['title'] = $sub_child_cat;
$new_cats[$sub_child_id]['parent_id'] = $child_id;
}
}
}
}
}
}
}
【问题讨论】:
-
能否请您制作一个小示例数组,其中包含您所拥有的 5 个元素以及您希望将其放入的形式
-
这段代码让所有这些孩子和子孩子头晕目眩......并且在同一维度上拥有父母和孩子的ID似乎也很奇怪
-
此功能正在运行,但需要手动执行一次 foreach 以更深入地获取子类别。我认为递归函数应该非常适合我的情况,但我很难创建它。
-
也许你可以看看php.net/manual/en/function.array-walk-recursive.php,看看你能不能写一个像样的回调来满足你的需求。不过,这可能需要您检查您的数组结构。