我尝试从单行代码返回另一个目录中可用的目录数组而不执行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')
任何想法?
答案 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);