请实例演绎你对回调函数与递归函数的理解?
16lz
2021-08-08
<?php
$arr=[
['id'=>1,'pid'=>0,'name'=>'体育'],
['id'=>2,'pid'=>0,'name'=>'娱乐'],
['id'=>3,'pid'=>0,'name'=>'科技'],
['id'=>4,'pid'=>0,'name'=>'新闻'],
['id'=>5,'pid'=>1,'name'=>'篮球'],
['id'=>6,'pid'=>1,'name'=>'足球'],
['id'=>7,'pid'=>1,'name'=>'乒乓球'],
['id'=>8,'pid'=>1,'name'=>'羽毛球'],
['id'=>9,'pid'=>2,'name'=>'八卦'],
['id'=>10,'pid'=>3,'name'=>'手机'],
['id'=>11,'pid'=>3,'name'=>'电脑'],
['id'=>12,'pid'=>4,'name'=>'国际新闻'],
['id'=>13,'pid'=>4,'name'=>'国内新闻'],
['id'=>14,'pid'=>12,'name'=>'欧洲新闻'],
['id'=>15,'pid'=>10,'name'=>'华为'],
['id'=>16,'pid'=>10,'name'=>'小米'],
['id'=>17,'pid'=>15,'name'=>'华为P50'],
['id'=>18,'pid'=>15,'name'=>'华为P40']
];
//无限分级
function wx(array $arr,int $pid,int $level){
static $arr1;
if(!empty($arr)){
for($i=0;$i<count($arr);$i++){
if($arr[$i]['pid'] == $pid){
//其实想输出数组的可惜不会了
echo str_repeat(' ',$level).$arr[$i]['name'].'<br>';
wx($arr,$arr[$i]['id'],$level+1);
}
}
}
}
//回调函数
call_user_func_array('wx',[$arr,0,0]);
//回调匿名函数
$func=function (array $arr,int $pid,int $level){
static $arr1;
if(!empty($arr)){
for($i=0;$i<count($arr);$i++){
if($arr[$i]['pid'] == $pid){
//其实想输出数组的可惜不会了
echo str_repeat(' ',$level).$arr[$i]['name'].'<br>';
wx($arr,$arr[$i]['id'],$level+1);
}
}
}
};
call_user_func_array($func,[$arr,0,0]);
更多相关文章
- PHP基础课第四次作业
- 0805作业
- 请实例演绎php遍历数组与js遍历数组的区别
- 0805 PHP编程作业
- 数组、计算器
- php 求数组中的偶数成员
- 数组循环取模及代码实现计算器
- 0805 一.将数组的偶数去出, 二.尝试实现计算器功能
- 参数,作用域,匿名函数