2016-08-12 10 views
1

foreachを実行せずに、1行のコードから別のディレクトリにあるディレクトリの配列を返そうとしています。これは私が実際にこのコードのロジックを使用してください:glob関数からディレクトリの配列を返します

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

今の問題は、私は別の配列が$dirs呼ばれており、その中にディレクトリ名をプッシュする必要があることだ、私は配列を返す1行で解決策を探しています次のようなものです:

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

答えて

0

あなたはjson_encode機能を使用することができます

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

をそして、あなたはjson_decode機能を持つ配列を得ることができます。

+0

ですが、返すのは基本名ですか? – user3287550

+0

お試しください。問題を解決した場合は、解決済みの質問をすることができます。 – Aminesrine

+0

これは1つの部分でしか動作しません、私は説明された私のポストとして、各ディレクトリのベースネームだけを返す必要があります。 – user3287550

0

あなたはディレクトリのみを抽出したい場合は、glob()は、そのための設定があります...

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

パスを削除する場合:

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

またはより良いです、​​3210を呼び出す前に現在の作業ディレクトリを変更するだけです:

chdir('main_dir/language/'); 
$dirs=glob('*',GLOB_ONLYDIR); 
関連する問題