2012-04-22 260 views
-3

任何人都可以帮我解决这个问题吗?我似乎无法让它工作!scandir错误:为foreach提供的参数无效()

<?php 
$file = scandir("../"); 

foreach ($files as $file) { 
    if(is_dir($file) && $file != '.' && $file != '..' && $file != 'images') { 
     $folders++; // Counter 
    } elseif(is_file($file) && $file != '.' && $file != '..' && $file != 'index.php') { 
     $total++; // Counter 
    } 
} 

echo "$folders folders · $total files"; 
?> 

而我得到的错误是:

Invalid argument supplied for foreach()

+0

Typo:'$ file = scandir(“../”);'应该是'$ files = ...'-1,因为缺少基本的调试工作。此外,您不初始化$文件夹,也不$总 – 2012-04-22 16:44:20

+0

仍然不能作为'$ files' – 2012-04-22 16:46:07

+0

重新检查您的变量名称。如果'$ files'是由'scandir()'生成的数组,那么你的'foreach'需要逐步完成,为每个数组设置'$ file'。要查看'scandir()'的输出是否失败,请在'foreach'前添加'print_r($ files);'。 – ghoti 2012-04-22 16:48:05

回答

0
error_reporting(E_ALL); 

在所有代码的顶部总是帮助

好吧,如果你得到的foreach错误,但没有Undefined variable: files一个 - 看起来你在scandir和循环之间的$files变量上做了一件坏事。

或者你只是愚弄每个人运行一些其他的代码,而不是发布在这里。

+0

当我这样做时,我得到这些错误:'未定义变量:文件夹'和'未定义变量:总数' – 2012-04-22 16:46:49

+0

请考虑一下你的代码,不是在那里,也不是谷歌:你会如何解决你的问题?未定义的变量?先定义它! (在这种情况下,你使用一个计数器,但你不要初始化它) – 2012-04-22 16:49:31

+0

@FlameTrap如果你仍然遇到你的foreach错误,它是可以的。 – 2012-04-22 16:50:28

相关问题