都return了就不要global引用变量了吧,记得手册说global有意外行为
function dirSize($path){ $handle=opendir($path); while(($item=readdir($handle))!==false){ if($item!="."&&$item!=".."){ if(is_dir($path."/".$item)){ $func=__FUNCTION__; $sum+=$func($path."/".$item); } else if (is_file($path."/".$item)){ $sum+=filesize($path."/".$item); } } } closedir($handle); return $sum; }