提问者:小点点

PHP foreach目录数组收到错误通知:第45行的数组到字符串转换


下面是一个查找子目录并将其存储在数组中的脚本。 当我使用foreach单步执行目录时,我得到并eror将array转换为String。 我已经使用gettype tseted了foreach变量,并且显示为字符串。

            $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个答案

匿名用户

我解决了这个问题,这是我初始化数组的方式。 我应该使用null和not[];

匿名用户

我认为您在初始化$AR_DIRLIST数组时可能是错误的。 应该是:

$ar_dirlist = [];