关于sum

来源:2-1 查看文件夹并递归获取大小

薛_森

2015-02-17 23:30

$sum放到里面,它初始化为0,里层的递归不影响外层递归中的$sum的值吗,搞不明白了

<?php

$sum=0;

function dirSize($path){

//$sum=0;

global $sum;

$handle=opendir($path);

while(($item=readdir($handle))!==false){

if($item!="."&&$item!=".."){

if(is_file($path."/".$item)){

$sum+=filesize($path."/".$item);

}

if(is_dir($path."/".$item)){

//$func=__FUNCTION__;

dirSize($path."/".$item);

}

}

}

closedir($handle);

return $sum;

}

$path="file";

echo dirSize($path);


写回答 关注

1回答

  • King
    2015-02-19 18:26:18
    已采纳

    函数中的变量是局部变量,函数执行完毕之后就被释放掉了

    ^-^...

    PdpdPd...

    老师,我发现dirsize里面的$sum=0就算是改成$=10000也不会对结果产生影响,这个同学的提问应该是$sum成为全局变量后,正常来讲应该改依旧无法累加(因为函数的第一个语句就是$sum=0,每次递归都会清零)。其实dirsize函数中$sum=0这个语句是不起作用的,我猜是不是因为它是局部变量,而global后的$sum指向的是全局变量,实际上这已经是两个不同的变量了,所以global后的$sum(全局),并不会受dirsize函数中的$sum=0(局部)语句的影响?

    2017-07-02 16:02:03

    共 2 条回复 >

WEB在线文件管理器

通过本课程文件目录函数库的学习,让你掌握文件、目录函数库的应用

36227 学习 · 332 问题

查看课程

相似问题