今天在论坛里面碰到一个问题感觉很有必要备份一下,是关于递归的return true跟return false的问题!这个问题对于接触过PHP的人都有过这样的经历吧?备份一下,留给以后学习的phper们!做一个参考:
论坛问题:
这两天一直被 return 搞的云里雾里。
比如说昨晚老师讲的递归:
PHP
1
2
3
4
5
6
7
8
//这是老师的代码:
functionmk_dir($path){
if(is_dir($path)){
returntrue;
}
returnis_dir(dirname($path))||mk_dir(dirname($path))?mkdir($path):false;
}echomk_dir('./a/b/c/d/e')?'OK':'false';
但我理解了老师的语意后
1.如果path直接存在,那就直接跳出
2.其它情况,那肯定是else了。我把代码写成了如下:
PHP
1
2
3
4
5
6
7
8
9
10
functionmk_dir($path){
if(is_dir($path)){
returntrue;//这里不加true跟加true有什么区别?
}else{
is_dir(dirname($path))||mk_dir(dirname($path))?mkdir($path):false;
}
}
echomk_dir('./a/b/c/d/e')?'OK':'false'; //但是结果是:false 只创建a目录
看似简单的reture,到我这里怎么就这么难理解呢。我提出如下几个问题:
1.这个return 撒时候用?
2.return 和return true 和 reture false 用在什么时候 ?
3.return 后面接一句代码 与 直接一条代码 有什么区别?
问题回帖者:
一楼:
递归是不太好理解,要想清楚什么时候该'递' 什么时候该'归' return就看作'归',如果一去不归,那就是坑爹.
二楼:
楼上说的很好! 调用是递,return 就是归的过程
./a/b/c/d/e 等./a/b/c/d/创建归来
./a/b/c/d 等 ./a/b/c/创建归来
./a/b/c/ 等 ./a/b/创建归来
./a/b/ 等 ./a/创建归来
a创建成功了,可你不归去告诉b呀......,
第5只小猴摘了桃子后不回去告诉第4只猴,第4只猴子哭了.
三楼:三楼画着这张图真的很棒!
以上就是关于PHP中return true跟return false的理解。更新到这,如果还有不是很明白的同学那就再取百度咯!