[英]Using scandir on array of directories
我想傳遞一個包含要掃描目錄列表的數組。 我想遍歷每個目錄,並將其內容推送到另一個要打印的數組中,但是由於某種原因,我的代碼無法正常工作。 目錄存在並且路徑正確。 我認為這與我如何使用foreach有關。
這些是我得到的錯誤:
注意:未定義的索引:第6行的C:\\ xampp \\ htdocs \\ test.php中的C:\\ Users \\ john \\ Desktop \\ files \\ images \\
警告:scandir():目錄名在第6行的C:\\ xampp \\ htdocs \\ test.php中不能為空
這是代碼:
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\\"]);
如果有人可以想到一種更簡單的方法,請隨時告訴我。
您走在正確的軌道上。 不過,您需要進行一些更改。
function test($dir = []) {
$list = [];
foreach($dir as $bar) {
$list[] = scandir($bar);
}
print_r($list);
}
如@BrianPoole所述,您需要將$list
移出foreach
循環。 通過將其放入循環中,每次迭代都會重置數組,從而使最終數組具有一個元素。
另外, @ TimCooper上面解釋的foreach
循環與JavaScript中的操作不同。 如果您確實要訪問密鑰,則可以使用以下語法:
foreach($dir as $key => $bar)
然后,您將使用$dir[$key]
或$bar
訪問目錄值。
最后, array_push
是您不需要的其他函數調用。 通過簡單地添加[]
PHP會將新值推送到數組的末尾。
function test($dir) {
// DEFINE LIST OUT SIDE OF LOOP
$list = array();
// Run checks
if(count($dir) > 0) {
// Loop Through Directory
foreach($dir as $directory) {
// Push into list
array_push($list, array("scanned"=>$directory, "contents" => scandir($directory)));
}
}else {
// If no directories are passed return array with error
$list = array(
"error" => 1,
"message" => "No directories where passed into test()",
);
}
print_r($list);
}
這就是我要做的。 它提供了一些檢查並設置了數據,因此您可以更清楚地了解它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.