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
****************

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/11/09 17:04:41
  • 終了:2013/11/10 01:29:07

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4523ベストアンサー獲得回数18802013/11/09 17:24:36

ポイント250pt

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

<?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;
}
?>

その他の回答(1件)

id:a-kuma3 No.1

a-kuma3回答回数4523ベストアンサー獲得回数18802013/11/09 17:24:36ここでベストアンサー

ポイント250pt

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

<?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;
}
?>
id:tezcello No.2

tezcello回答回数460ベストアンサー獲得回数692013/11/10 00:35:26

ポイント250pt

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かと。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません