首页 > 解决方案 > PHP foreach 目录数组报错注意:第 45 行数组到字符串的转换

问题描述

下面是一个查找子目录并将它们存储在数组中的脚本。当我使用 foreach 遍历目录时,我得到并错误地将数组转换为字符串。我已经使用 gettype 设置了 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 />';
            }

标签: phparraysforeach

解决方案


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

$ar_dirlist = [];

推荐阅读