PHP の while ループ内で foreach を実行しようとすると問題が発生します。データベース テーブルからビルド名を抽出しています。これらのビルド名はたまたまフォルダー名です。これらのフォルダー内にはフォルダー (Client または Clients) があり、その中にはクライアントのビジネス名にちなんで名付けられたフォルダーがあります。スクリプトでビルド名を表示し (echo で既に達成されている)、ビルド名の下に各フォルダーを一覧表示する必要があります。
$build_grab = mysql_query("SELECT b_id,b_name FROM builds", $link);
while($build_row = mysql_fetch_array($build_grab))
{
$b_id = $build_row['b_id'];
$b_name = $build_row['b_name'];
$client_dir = is_dir("/somepath/builds/$b_name/Client/");
$clients_dir = is_dir("/somepath/builds/$b_name/Clients/");
if ($client_dir == '1') {
$client_folders = explode(",", exec("ls -1 /somepath/builds/$b_name/Client/"));
} elseif ($clients_dir == '1') {
$client_folders = str_replace("\n","", explode(",", exec("ls -1 /somepath/builds/$b_name/Clients/")));
};
echo $b_name;
echo "\r\n";
foreach($client_folders as $folder)
{
echo $folder;
echo "\r\n";
}
}
残念ながら、これはビルドごとに 1 つのクライアント フォルダー名しか与えないようで、常にフォルダー内の最後のクライアント (az) です。
出力例:
build-4.0.0.0
Client-f
build-4.0.0.1
Client-d
build-4.0.0.2
Client-j
ここで何が欠けているのか、もっと効率的な方法はありますか? どんな助けでも大歓迎です!