为了账号安全,请及时绑定邮箱和手机立即绑定

关于sum

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


正在回答

3 回答

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

^-^...

0 回复 有任何疑惑可以回复我~
#1

薛_森 提问者

非常感谢!
2015-08-31 回复 有任何疑惑可以回复我~
#2

PdpdPdpd

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

举报

0/150
提交
取消
WEB在线文件管理器
  • 参与学习       36222    人
  • 解答问题       332    个

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

进入课程
意见反馈 帮助中心 APP下载
官方微信