我试图将FTP服务器的directorty和文件结构变成这样的数组:
Array
(
[test] => Array
(
[css] => Array
(
[0] => a.css
[1] => b.css
[2] => c.css
[3] => css.php
[4] => css.run.php
)
[CSV] => Array
(
[0] => abc.csv
)
[image] => Array
(
[0] => a.jpg
[1] => ab.jpg
[2] => a_rgb_0.jpg
[3] => a_rgb_1.jpg
[4] => a_rgb_2.jpg
[5] => f.jpg
)
[img] => Array
(
[users] => Array
(
[0] => a.jpg
[1] => a_rgb_0.jpg
)
)
)
RecursiveDirectoryIterator类可以完美地工作,但有没有办法将它与FTP数据流一起使用?
答案 0 :(得分:0)
你可以使用一个简单的递归函数,如下所示:
function listDir($ftp_con,$dir)
{
$array_list = array();
$list = ftp_nlist($ftp_con,$dir);
foreach ($list as $file)
{
$pathinfo = pathinfo($file);
if ($pathinfo['extension'] == '')
{
if ($pathinfo['basename'] != '.' and $pathinfo['basename'] != '..')
$array_list[$pathinfo['basename']] = listDir($ftp_con,$file);
}
else
$array_list[] = $pathinfo['basename'];
}
return $array_list;
}
$ftp_con = ftp_connect('ftphost.com', 21, 60);
ftp_login($ftp_con,'username','password');
print_r(listDir($ftp_con,'path/to/start/directory'));
请注意,使用别名可能会导致无限循环。