从glob函数返回一个目录数组

时间:2016-08-12 15:22:24

标签: php

我尝试从单行代码返回另一个目录中可用的目录数组而不执行foreach。为此,我实际使用此代码逻辑:

$dirs = array();
foreach(array_filter(glob('main_dir/language/*'), 'is_dir') as $dir)
{
    $dirs[] = basename($dir);
}

现在问题是我应该有另一个名为$dirs的数组并将目录名称推入其中,我在一行中寻找一个返回数组的解决方案,就像这样:

return array_filter(glob('main_dir/language/*'), 'is_dir')

任何想法?

2 个答案:

答案 0 :(得分:0)

您可以使用json_encode功能:

return json_encode(array_map('basename', array_filter(glob('main_dir/language/*'), 'is_dir')));

然后你可以使用json_decode函数获取数组。

答案 1 :(得分:0)

如果您只想提取目录,glob()有一个设置...

$dirs=glob('main_dir/language/*',GLOB_ONLYDIR);

如果要删除路径:

$dirs=array_map('basename',glob('main_dir/language/*',GLOB_ONLYDIR));

甚至更好,只需在调用glob()之前更改当前的工作目录:

chdir('main_dir/language/');
$dirs=glob('*',GLOB_ONLYDIR);