人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPの質問です hogeフォルダがありその中に1 2 3 4のフォルダが入っています
****************
hoge/1
hoge/2
hoge/3
hoge/4
****************
そこで以下のプログラムを実行しましたら
****************
<?php
foreach (glob('hoge/*',GLOB_ONLYDIR) as $f) {
echo "", $f ,"";}
?>
****************
結果
****************
1
2
3
4
****************
と表示されるのですがこれを
奇数列目の数字の左にaの文字
偶数列目の数字の右にbの文字を付けたいのですがどのようにすればいいでしょうか?
****************
a1
2b
a3
4b
****************

●質問者: takanii
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● a-kuma3
●250ポイント ベストアンサー

ベタですけど、こんな感じではどうですか?

<?php
$i = 1;
foreach (glob('hoge/*',GLOB_ONLYDIR) as $f) {
 $s_head = $s_tail = '';
 if ($i % 2 == 1) {
 $s_head = 'a';
 } else {
 $s_tail = 'b';
 }
 echo $s_head . $f . $s_tail;
 $i += 1;
}
?>

2 ● tezcello
●250ポイント

glob() を使うと指定したパターンにマッチする形でファイル名(ディレクトリ名)を取得してしまいます。
__例のものだと、hoge/1, hoge/2, hoge/3, hoge/4

echo する前に basename()や preg_match() などでパターン指定に使った部分を除去する作業が必要でしょう。

foreach (glob('hoge/*',GLOB_ONLYDIR) as $f) {
 $flg = empty($flg);
 if ($flg) print 'a';
 print basename($f);
 if (!$flg) print 'b';
 print "\n";
}

順番に左右に振るだけなら算術演算するまでも無く、フラグを反転するだけでもOKかと。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ