【发布时间】:2014-06-10 18:22:12
【问题描述】:
我想传入一个包含要扫描的目录列表的数组。我想遍历每个目录并将其内容推送到另一个我将打印出来的数组中,但由于某种原因我的代码无法正常工作。目录存在且路径正确。我认为这与我使用 foreach 的方式有关。
这些是我得到的错误:
注意:未定义索引:C:\Users\john\Desktop\files\images\ in C:\xampp\htdocs\test.php 在第 6 行
警告:scandir():目录名不能为空 C:\xampp\htdocs\test.php 在第 6 行
这是代码:
function test($dir = []) {
foreach($dir as $bar) {
$list = [];
array_push($list, scandir($dir[$bar]));
}
print_r($list);
}
test(["C:\Users\john\Desktop\files\images\\", "C:\Users\john\Desktop\files\images\autumn\\"]);
如果有人能想到更简单的方法,请随时告诉我。
【问题讨论】:
-
PHP 的
foreach不像 JavaScript 的for in语句;$bar将是实际元素,而不是元素的键。 -
$dir长什么样子? -
@TimCooper:好吧。但我只看到第二个目录的内容。我把它改成了
foreach($dir as $bar) { $list = []; array_push($list, scandir($bar)); }- 对吗? -
您正在为每个目录重置
$list。将$list移出foreach。 -
您只想调用
scandir($bar)并使用array_merge() 将结果附加到$list。在您当前的表单中,每次迭代都会重置列表的内容。请注意,如果您想遍历键和值,可以使用foreach ($array as $key => $value)语法,但我认为这里不需要。
标签: php