[英]Nested function for categories
I'm trying to make a nested function for multiple subcategories and I have the following array with categories and subcategories. 我正在尝试为多个子类别创建一个嵌套函数,我有以下数组和类别和子类别。
Array
(
[0] => Array
(
[id] => 1
[parent_id] => 0
[name] => Women
)
[1] => Array
(
[id] => 6
[parent_id] => 0
[name] => Men
)
[2] => Array
(
[id] => 4
[parent_id] => 1
[name] => Child of women 3
)
[3] => Array
(
[id] => 5
[parent_id] => 4
[name] => Child of "Child of women 3"
)
)
and the following function 以及以下功能
private function categories($array, $parent_id = 0) {
$return = array();
foreach($array as $key => $val) {
if($val['parent_id'] == $parent_id) {
$return[$val['id']] = $val;
} else {
$return[$val['parent_id']]['children'][] = $val;
}
}
return $return;
}
For now it works only with 1 subcategory but I want this output: 现在它只适用于1个子类别,但我想要这个输出:
Women
--Child of women 3
----Child of "Child of women 3
Men
private function categories($array, $parent_id = 0) {
$textb = '';
foreach($array as $key => $val) {
if($val['parent_id'] == $parent_id) {
$current_id = $val['id'];
$textb .= '<li>' . $val['name'];
$categories = self::categories($array, $current_id);
if(isset($categories) && !empty($categories))
$textb .= '<ul>' . $categories . '</ul>';
$textb .= '</li>';
}
}
return $textb;
}
I managed something but It looks weird and there is a duplicate. 我管理了一些东西,但它看起来很奇怪,并且有重复。
private function categories($array, $parent_id = 0) {
$return = array();
foreach($array as $key => $val) {
if($val['parent_id'] == $parent_id) {
$return[$val["id"]] = $val["name"];
$return[$val["id"]] = array_merge($return, self::categories($array, $val["id"]));
}
}
return $return;
}
Array
(
[1] => Array
(
[0] => Women
[1] => Array
(
[0] => Child of women 3
[1] => Array
(
[0] => Child of "Child of women 3"
)
)
)
[6] => Array
(
[0] => Array
(
[0] => Women
[1] => Array
(
[0] => Child of women 3
[1] => Array
(
[0] => Child of "Child of women 3"
)
)
)
[1] => Men
)
)
Try this: [Please note, I tried on separate file without class.] 试试这个:[请注意,我尝试了没有上课的单独文件。]
function categories($array, $parent_id = 0) {
$return = array();
foreach($array as $key => $val) {
if($val['parent_id'] == $parent_id) {
$return[$val["id"]] = categories($array, $val["id"]);
$return[$val["id"]]["name"] = $val["name"];
}
}
return $return;
}
It will give you output as below: 它会给你输出如下:
Array
(
[1] => Array
(
[4] => Array
(
[5] => Array
(
[name] => Child of "Child of women 3"
)
[name] => Child of women 3
)
[name] => Women
)
[6] => Array
(
[name] => Men
)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.