今天以朋友问我论坛的无限评论回复输出问题,他已经把数据从数据库中读出来,并且通过遍历格式化好了。
现在他想输出这些数据,但是不知道一个数组是多少维的,可能一维,可能二维,也可能多维。我得第一反应是自己写个函数遍历输出,想到PHP系统函数强大,给他了一个array_walk的建议方案。如下所示:
现在他想输出这些数据,但是不知道一个数组是多少维的,可能一维,可能二维,也可能多维。我得第一反应是自己写个函数遍历输出,想到PHP系统函数强大,给他了一个array_walk的建议方案。如下所示:
<?php
header('Content-type:text/html;charset=UTF-8');
//模拟了一下评论数据的格式
$arr = array(
0=>array(
'pid'=>'0',
'id'=>1,
'name'=>'第01级',
'child'=>array(
'pid'=>'1',
'id'=>2,
'name'=>'第02级',
'child'=>array(
'pid'=>'2',
'id'=>3,
'name'=>'第03级',
'child'=>array(
'pid'=>'3',
'id'=>4,
'name'=>'第04级',
'child'=>array()
)
)
)
),
1=>array(
'pid'=>'0',
'id'=>1,
'name'=>'第11级',
'child'=>array(
'pid'=>'1',
'id'=>2,
'name'=>'第12级',
'child'=>array(
'pid'=>'2',
'id'=>3,
'name'=>'第13级',
'child'=>array(
'pid'=>'3',
'id'=>4,
'name'=>'第14级',
'child'=>array()
)
)
)
)
);
//bool array_walk ( array &array, callback funcname [, mixed userdata] )
array_walk($arr, 'walk_node');
//一个回调函数。
function walk_node($item, $key, $userdata='自定义数据'){
if (is_array($item)) {
echo $item['name'],'<br />';
if (!empty($item['child']) ) array_walk($item, 'walk_node');
}
}
PS:不知道是什么版本开始,PHP开始支持类似JavaScript的方式传递匿名函数,如:array_walk($array, function($item, $key, $userdata()){......});