我写的这个目的是统计文件夹大小
<?
$dir="d:/program files/wamp/www/1/";
fsize($dir);
function fsize($dir){
$headle=opendir($dir);
while($file=readdir($headle)){
if($file!="."&&$file!=".."){
if(is_dir($dir.$file)){
$file_file[]=$file;
}
else{$v+=filesize($file);
}
}
}
foreach($file_file as $value){
fsize($dir.$value);
}
echo $v;
}
?>可执行后提示:
Warning: Invalid argument supplied for foreach() 
$file_file是个数组啊?
为什么呢?

解决方案 »

  1.   

    你有个判断语句,这个不要不记得。
    if(is_dir($dir.$file))
    {
    $file_file[]=$file;
    }
    else
    {
    $v+=filesize($file);
    }如果is_dir($dir.$file)不成立,那就运行了else语句,那哪里还有$file_file数组???呵呵。
      

  2.   

    楼上的哥哥,这是数组还是有的,在foreach语句后加了print($file_file);
    输出结果是:
    Warning: Invalid argument supplied for foreach() in D:\Program Files\wamp\www\1.php on line 15Warning: Invalid argument supplied for foreach() in D:\Program Files\wamp\www\1.php on line 15
    Array ( [0] => 新建文件夹 [1] => 新建文件夹 (2) ) 188498
      

  3.   

    $file_file从何而来? 用于做什么?
    函数的漏洞太多了
      

  4.   

    楼上的哥哥,$file_file从这来得啊。
    if(is_dir($dir.$file)){
    $file_file[]=$file;
    }
    数组把“文件夹”收集起来,再送回函数。
      

  5.   

    嗯 刚刚没看清楚$file_file print出来是数组吗?如果是 那我也看不出来问题了