PHP массив каталогов foreach получает ошибку Примечание: преобразование массива в строку в строке 45 - PullRequest
0 голосов
/ 16 июня 2020

Ниже приведен сценарий, который находит подкаталоги и сохраняет их в массиве. Когда я использую foreach для перехода по каталогу, я получаю и исключаю преобразование массива в строку. Я установил переменную foreach с помощью gettype, и показано, что это строка.

            $dir = '/Video/Movies';     //base directory for search
            $ar_dirlist[] = [];         // array to store directory list
            //Function to walk directories and store subdirectories in an array
            function listFolderFiles($dir){
                global $ar_dirlist;
                $ffs = scandir($dir);
                // $ffs = sortbydir($dir, $ffs);
                unset($ffs[array_search('.', $ffs, true)]);
                unset($ffs[array_search('..', $ffs, true)]);
                // prevent empty ordered elements
                if (count($ffs) < 1)
                {
                    echo '<br />';
                    return;
                }
                //parse scandir output in array $ffs
                foreach($ffs as $ff){
                    $phpfile = $dir . '/' . $ff;
                    if(is_dir($phpfile))
                    {
                        $ar_dirlist[] = $phpfile;
                        listFolderFiles($phpfile); //if directory recurse

                    }

                }
            }
            listFolderFiles($dir);
            foreach ($ar_dirlist as $tmpdir) {
                echo '<h3>' . $tmpdir . '</h3>';   // This is line with error
                //echo '<br />';
            }

Ответы [ 2 ]

0 голосов
/ 16 июня 2020

Думаю, вы ошиблись при инициализации массива $ar_dirlist. это должно быть:

$ar_dirlist = [];
0 голосов
/ 16 июня 2020

Я решил проблему, так я инициализировал массив. Я должен был использовать null, а не [];

...