码迷,mamicode.com
首页 > 其他好文 > 详细

全局变量和递归

时间:2016-07-03 23:00:34      阅读:559      评论:0      收藏:0      [点我收藏+]

标签:

区别:

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");

 

全局变量和递归

标签:

原文地址:http://www.cnblogs.com/jinshui/p/5638920.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!