scandir错误:为foreach提供的参数无效()
任何人都可以帮我解决这个问题吗?我似乎无法让它工作!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()
error_reporting(E_ALL);
在所有代码的顶部总是帮助
好吧,如果你得到的foreach错误,但没有Undefined variable: files
一个 - 看起来你在scandir和循环之间的$files
变量上做了一件坏事。
或者你只是愚弄每个人运行一些其他的代码,而不是发布在这里。
当我这样做时,我得到这些错误:'未定义变量:文件夹'和'未定义变量:总数' – 2012-04-22 16:46:49
请考虑一下你的代码,不是在那里,也不是谷歌:你会如何解决你的问题?未定义的变量?先定义它! (在这种情况下,你使用一个计数器,但你不要初始化它) – 2012-04-22 16:49:31
@FlameTrap如果你仍然遇到你的foreach错误,它是可以的。 – 2012-04-22 16:50:28
Typo:'$ file = scandir(“../”);'应该是'$ files = ...'-1,因为缺少基本的调试工作。此外,您不初始化$文件夹,也不$总 – 2012-04-22 16:44:20
仍然不能作为'$ files' – 2012-04-22 16:46:07
重新检查您的变量名称。如果'$ files'是由'scandir()'生成的数组,那么你的'foreach'需要逐步完成,为每个数组设置'$ file'。要查看'scandir()'的输出是否失败,请在'foreach'前添加'print_r($ files);'。 – ghoti 2012-04-22 16:48:05