簡體   English   中英

用於打印文件和目錄的PHP遞歸功能不起作用

[英]PHP recursive function for printing files and directories is not working

我正在嘗試制作遞歸PHP函數,該函數將遍歷目錄樹和子目錄樹並將所有目錄和文件放入一個數組中。

我的代碼對我來說看起來很合邏輯,但無法正常工作。

目錄和文件樹:

在此處輸入圖片說明

PHP代碼

    <?php
        function printFiles($directory) {
            $files = array();

            foreach (scandir($directory) as $file) {
                if ($file === '.' || $file === '..') 
                    continue;

                // checking is it file or directory
                if (is_dir($directory . '\\'. $file)) {
                    return printFiles($directory . '\\'.  $file);
                }

                array_push($files, $file);
            }

            return($files);
        }

        $directory = 'C:\Users\Jakov\Desktop\DIRECTORIES';
        print_r(printFiles($directory));

    ?>

我得到這個結果:

Array ( )

您只會得到函數遇到的第一個最深的文件夾A_1_1包含的文件,該文件夾中沒有文件。

找到目錄時不返回。 改為添加到當前列表:

// checking is it file or directory
if (is_dir($directory . '/'. $file)) {
    $files = array_merge($files, printFiles($directory . '/'.  $file));
} else {
    array_push($files, $file);
}

另外,將/用作路徑。 它可以在Windows中使用,並且可以避免轉義錯誤:

$directory = 'C:/Users/Jakov/Desktop/DIRECTORIES';

(在代碼中,應使用\\\\而不是\\作為分隔符。)

您還應該檢查鏈接 -並忽略它們-否則您可能會陷入無限循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM