区别:
1.拿循环来说,全局变量不参与循环体,局部变量参与循环体
2.定义全局变量后,在函数外部可以取到该变量
3.看下面代码
$a=10; show(); function show() { $a=1; global $a; $a=100; echo $a; }//输出 100
$a=10; show(); function show() { $a=1; global $a; echo $a; } //输出 10
4.全局变量是一个完整的变量,可以连续记忆;局部变量不可以记忆;
递归:
就是做梦,一层一层进入,一层一层退出,每次出来的时候,下一层和上一层之间的结果如果不是全局变量,无联系。循环遍历出所有的可能;
特点:代码简单,不易理解,计算机消耗资源大,运算效率低;
参考实例:计算磁盘文件数量
//实例1:该路径下的文件、文件夹的数量 //定义两个变量 $filenum=0; $dirnum=0; Num("../file"); function Num($url) { //声明为全局变量 global $filenum; global $dirnum; //判断给的路径是不是文件m if(is_file($url)) { $filenum=1; return $filenum; exit(); } //如果是目录,计算文件、文件夹数量 //获取到该目录下的子文件 $attr=glob($url."/*"); //遍历所有的子文件 foreach($attr as $v) { //判断子文件是文件? if(is_file($v)) { $filenum++; } else { $dirnum++; Num($v);//递归,自己调用自己 } } } echo "文件的数量:".$filenum."<br/>"; echo "文件夹的数量:".$dirnum;
//实例2,不使用全局变量获取某路径下文件的数量 function Num($url) { $filenum=0; if(is_file($url)) { $filenum++; exit; } $attr=glob($url."/*"); var_dump($attr); foreach($attr as $v) { if(is_file($v)) { $filenum++; } else { //Num($v);//每一层的$filenum无联系 $file=$filenum+Num($v); } } return $filenum; } echo Num("../ajax");
时间: 2024-11-09 06:42:56