直接代码:
<?php
$arr = [
['id'=>1,'name'=>'新闻','pid'=>0,'level'=>0],
['id'=>2,'name'=>'产品','pid'=>0,'level'=>0],
['id'=>3,'name'=>'国内新闻','pid'=>0,'level'=>1],
['id'=>4,'name'=>'国外新闻','pid'=>0,'level'=>1],
['id'=>5,'name'=>'省内新闻','pid'=>0,'level'=>2],
['id'=>6,'name'=>'其他新闻','pid'=>0,'level'=>2],
['id'=>7,'name'=>'最新产品','pid'=>0,'level'=>1],
['id'=>8,'name'=>'其他产品','pid'=>0,'level'=>1],
['id'=>9,'name'=>'优惠产品','pid'=>0,'level'=>0],
];
$name = array_column($arr,'name');
printf('<pre>%s</pre>',print_r($name,true));
echo '<hr />';
//第三个参数是自定义索引键名
$name = array_column($arr,'name','id');
printf('<pre>%s</pre>',print_r($name,true));
echo '<hr />';
//第二个参数设置null,会发生什么?会根据第三个参数为基准,进行遍历
$name = array_column($arr,null,'id');
printf('<pre>%s</pre>',print_r($name,true));
echo '<hr />';
//遍历这个数组
function treeArray(array $data, int $pid=0): array
{
// 1.容器
$tree = [];
//2.遍历并更新原数组,添加'child'
foreach($data as &$value){
//以当前记录的pid为键
if(isset($data[$value['pid']])) {
$data[$value['pid']]['child'][] = &$value;
}else{
$tree[] = &$value;
}
}
//3.返回这个分类树
return $tree;
}
$cate = treeArray($name,0);
printf('<pre>%s</pre>',print_r($cate,true));