如何在javascript/php中调用具有子级的数组列表
我在如何使用javascript列出数组子项方面遇到了问题。 以下是我的php代码:如何在javascript/php中调用具有子级的数组列表,javascript,php,multidimensional-array,Javascript,Php,Multidimensional Array,我在如何使用javascript列出数组子项方面遇到了问题。 以下是我的php代码: $arr = array(); foreach ($categories as $key => $cat) { if($cat['parent_id'] == 0){ $arr[$cat['id']] = $cat; }else{ $arr[$cat['parent_id']][] = $cat; } } 这项研究的结果是: Array ( [1] =
$arr = array();
foreach ($categories as $key => $cat) {
if($cat['parent_id'] == 0){
$arr[$cat['id']] = $cat;
}else{
$arr[$cat['parent_id']][] = $cat;
}
}
这项研究的结果是:
Array (
[1] => Array (
[id] => 1
[parent_id] => 0
[name] => A
[0] => Array (
[id] => 2
[parent_id] => 1
[name] => B
)
[1] => Array (
[id] => 3
[parent_id] => 1
[name] => C
)
[2] => Array (
[id] => 4
[parent_id] => 1
[name] => D
)
)
[5] => Array (
[id] => 5
[parent_id] => 0
[name] => E
[0] => Array (
[id] => 6
[parent_id] => 5
[name] => F
)
[1] => Array (
[id] => 7
[parent_id] => 5
[name] => G
)
)
下面是我希望使用javascript或php创建的输出:
试试:
print_r($cat[1][name])代码>尝试:
print_r($cat[1][name])代码>
此函数可以优化(使用递归)以使用不同的嵌套级别
此函数可以优化(使用递归)以使用不同的嵌套级别 您当前的输出有什么问题?@SibirajPR我不知道如何像我帖子下面的图像那样显示它们。还有一个问题是,当子数组也有子数组时,它不会显示它,因为我的循环是如果($cat['parent_id']==0){$arr[$cat['id']=$cat;}当前我只检查父数组id是否等于0,仍然在寻找如何修改它的解决方案。。我希望有人能帮忙(最好在这里打印print\r($categories)
结构。@sibrajpr这里是$categories:Array([0]=>Array([id]=>1[parent\u id]=>0[name]=>A)[1]=>Array([id]=>5[parent\u id]=>0[name]=>E)[2]=>Array([id]=>2[parent\u id]=>1[name]=>B][3]=>Array([id]=>3[parent\id]=>1[name]=>C][4]=>([id]=>4[parent\u id]=>1[name]=>D[5]=>Array([id]=>6[parent\u id]=>5[name]=>F[6]=>Array([id]=>7[parent\u id]=>5[name]=>G))您当前的输出有什么问题?@SibirajPR我不知道如何像我帖子下面的图像那样显示它们。还有一个问题是,当子数组也有子数组时,它不会显示它,因为我的循环是if($cat['parent_id']==0){$arr[$cat['id']=$cat;}目前,我只检查等于0的父项id,仍在寻找如何修改它的解决方案。我希望有人能提供帮助:(最好在这里打印print\r($categories)
结构。@sibrajpr这里是$categories:Array([0]=>Array([id]=>1[parent\u id]=>0[name]=>A)[1]=>Array([id]=>5[parent\id]=>0[name]=>E][2]=>Array([id]=>2[parent\u id]=>1[name]=>B][3]=>Array([id]=>3[parent\u id]=>1[name]=>C][4]=>Array([id]=>4[parent\u id]=>1[name]=>D)[5]=>Array([id]=>6[parent\u id]=>5[name]=>F][6]=>Array([id]=>7[parent\u id]=>5[name]=>G]),但我过去一直打印[r]和[A]=>arra][1]但我过去常常打印r($arr[1][name]),并显示“A”
$paren_arr = array("id"=>0, "children"=>array()); // Top parent category:
foreach ($arr as $key=>$child ) {
/*If parent of current array is TOP (parent_id==0)
Add to TOP parent array. (TOP['children'][] = current array)
Else
Walk through each children of TOP parent. (parent_id!=0)
If child of TOP parent's ID is Parent id of current array
Add to TOP parent->child, this array. (TOP['children']['CHILD_ID'][] = current)
*/
if ( !is_array($param) )
continue;
if ( $param['parent_id']==0 ) {
$paren_arr['children'][$param['name']] = $param;
} else {
foreach ( $paren_arr['children'] as $name=>$child_param ) {
if ( $param['parent_id']==$child_param['id'] ) {
$paren_arr['children'][$name]['children'][$param['name']] = $param;
}
}
}
}