• ベストアンサー

PHP プログラム ループ処理

プログラム初心者です、ループ処理についてうまい解決方法が思い浮かばず相談させて頂きます。 ループ処理において、ループ内で変数を定義するのに違う名前を指定するにはどのような方法があるのでしょうか 例えばwhileの場合 $i =0; while($i<10){ $hoge = $i; $i++ } この$hogeを2順目には$hoge1、3順目には$hoge2と言うように増やしたり一定の法則に乗っ取って変数名を変更するにはどのように書けばいいのでしょうか。 どなたかご教授頂ければと存じます、宜しくお願い致します。

  • PHP
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • aa_akiya
  • ベストアンサー率100% (21/21)
回答No.1

$i =0; while($i<10){ $suffix = ($i > 0) ? $i : ''; ${'hoge' . $suffix} = $i; $i++; } 上記のようなコードで可能です。

参考URL:
http://php.net/manual/ja/language.variables.variable.php
makino03
質問者

お礼

返信が遅くなって申し訳ございません。 ご教授を頂きありがとうございます。 Noticeエラーがでるものの、求めていた答えです。ありがとうございます。

その他の回答 (2)

  • k_kota
  • ベストアンサー率19% (434/2186)
回答No.3

多分配列って概念を知らないのではないかなと予測。 なので、配列で調べて勉強すれば良いと思います。 配列を知ってて変数名を買えたいと言うならどうなんでしょうかね、あまりいいやり方は知りません。

makino03
質問者

お礼

返信が遅くなって申し訳ございません。 多分配列は知りませんでした、ありがとうございます。 配列を勉強してみます。

  • chie65535
  • ベストアンサー率43% (8522/19371)
回答No.2

逆質問で申し訳ない。 >この$hogeを2順目には$hoge1、3順目には$hoge2と言うように増やしたり一定の法則に乗っ取って変数名を変更するにはどのように書けばいいのでしょうか。 何故「配列」を使わないのですか? $hoge($i)=$i;で良いじゃないですか?

makino03
質問者

お礼

返信が遅くなって申し訳ございません。 ご教授を頂きありがとうございます。 それでも良いのですが私が初心者なため、基本的にどのような解決策があるのかが知りたく簡素化して上記の質問とさせていただきました。 参考にさせていただきます。

関連するQ&A

  • setTimeoutをループさせDOMを処理したい

    「setTimeout」「for文」「jQuery」を利用して、1秒ごとに、 <div class="hoge1">、<div class="hoge2">、<div class="hoge3">へ対して、同じ処理をしたいです ■処理内容イメージ ・ループカウントの変数iを渡して、それぞれのdiv内で、1、2、3と表示 ■質問 「setTimeout」を1秒ごとに、指定DOMへ対して、ループさせる方法を教えてください ※ループできるなら、「for文」じゃなくても良いです

  • PHPのプログラム中に一定時間処理を待ちたい場合

    例えばwhileループがあったとし、下記のように5秒などまってから処理関数に入るように作りたいのですが、何かいい方法はないでしょうか? while($i!=1){ 処理待ち関数 処理関数 }

    • ベストアンサー
    • PHP
  • ループ処理を抜けた時点での処理回数を表示したい

    今、以下のような「green」が配列の何番目にあるのか調べるプログラムを考えています。 具体的な処理としては、配列の値を順番に調べて「green」を見つけたらループをぬけて何番目にあったかを表示する、といった処理になります。 ただ、現時点ではループをぬけた時何番目だったのかを取得できないでいます。 $numを取得して表示するにはどのような処理を行えばよいでしょうか。 解説していただけると幸いです。 ---プログラム--- class hoge{ function hoge(){ $this->color = array("red", "blue", "pink", "white", "black", "gold", "yellow"...,"green",...); } function test(){ for($i = 0;$i < count($this->color);$i++){ if($this->color[$i] == 'green'){ echo $this->color[$i]."\n"; break;###ここでループをぬける } } echo "緑は${num}番目"; } } $a = new hoge(); $a->test(); ---

    • ベストアンサー
    • PHP
  • 変数の名前をループで

    $hoge1 $hoge2 $hoge3 という変数があるとします。 そしてこの変数の中身の数のカウントを1回のループで行いたくて下のようなスクリプトを書きました。 $j=0 for($i=0; $i<3; $i++) { $j++; $aaa='$hoge' . $j; $cnt=count($aaa); print $cnt; } しかしこれだと$task1、$task2、$task3という文字列になってしまい、count関数を使っても1が出力されるだけにしかなりません。 "変数"として認識させることは可能でしょうか?

    • ベストアンサー
    • PHP
  • BShell 動的配列のループ処理について

    動的に変数名を作成した配列について、ループ処理を行う場合、どうしたらいいでしょうか 以下のような処理を書いたのですが、駄目でした。 a=0 while [ ${a} -ne 10 ] do     eval $(printf TEST%02d $a)=(aaa bbb ccc) #TEST00 - TEST10の配列が作られる。     # TEST00 - TEST10の配列の中身にたいして処理を行いたい。。。     for (( I=0; I < ${#`eval $(printf TEST%02d $a)[@]`}; ++I )) # エラー     do         // ここで処理したい・・・     done done いいアイディアがありましたらご教授よろしくお願いいたします。

  • perl:ループのカウンタ変数の値を保持したい。

    While文のループのなかにfor文でループをまわしているスクリプトなのですが、 forの中でカウンタ変数をつくり、ループ回数を計測しております。 またforの中である条件を満たした際に、lastでforを抜け、引き続きWhileのループを継続するという処理をしております。 $i=0; While(○○){ 処理1    for(××){ 処理2 $i++;      if($i >=100){  処理3       last; } } } ここで、一度for文のif文で一度forループを抜け、Whileでループをし、またforループに突入した際に、前回forループでカウントした$iの値を保持したまま、そのつづきから$iのカウンタを動作させたいのですが、$iの値はforループを抜けるとリセットしてしまいます。 このような場合、どうすれば$iの値を保持できますでしょうか。 お詳しい方、宜しくお願い致します。 ※ネストがうまく表現できず、みずらくてスミマセン。

    • ベストアンサー
    • Perl
  • 配列を使わずに、変数名を動的にループで回したい

    配列を使わずに、変数名を動的にループで回したい 大学の課題をやっている途中に思ったことなのですが……。 プログラム中に同じ型の変数p1,p2,p3があり、それぞれの変数にループで同じ処理を施したいと思っています。 しかし、「p(i)」や「("p" + i)」などと、変数どうしを別のものとして認識させようとしても、コンパイラから警告が出て上手くいきません。 配列を使えば、このような処理が出来ることはわかるのですが、使う変数名を指定されてしまっているために、今回は配列を使えません。 出来るか出来ないか、出来る場合は方法を知りたいです。 後、今回はC言語のプログラムで利用出来るかが自分にとっての問題なのですが、C言語以外のこのプログラミング言語なら出来る、とかの情報もこの機会に知りたいです。 お答え出来る範囲でいいので、もしよければ回答お願いします。

  • PHPループをカウントダウンできますか?

    <?php $i = 0; while ($i < 10) {   if ($i == 5) {    echo "$i 回で終わります<br>";    break;   }   echo "$i 回目のループ<br>";   $i++; } 【結果】 0 回目のループ 1 回目のループ 2 回目のループ 3 回目のループ 4 回目のループ 5 回で終わります と、0,1,2,3,4,5とループがありますが、 この結果を逆に、 5 回で終わります 4 回目のループ 3 回目のループ 2 回目のループ 1 回目のループ 0 回目のループ とすることは可能でしょうか?? また、もし可能であれば、なんという方法(名称?専門的な呼び方?)となるのでしょうか ご存じの方いらっしゃいましたら、ご回答お願い致します。

    • ベストアンサー
    • PHP
  • ループを途中で抜けたいのですが。

    無限ループさせているwhileやfor文などで、 何かのキーを押すとループを抜けるように設定したいのですが可能でしょうか? (scanfやcinなどをループの中に組み込まずに。ctrl+Cも無しで。) (あと、フォーム上ではなくコンソール上で。) 多分説明不足なのでもうちょっと詳しく。 たとえば、 while ( i != 1 ){ j += 1; } の様な無限ループを設定したとして、 本来なら if (j > 100 ){ break; } とか、 while文の中に scanf ( "%d" , &i ); 等を入れて終了条件を満たさせるべきですが、 そうではなく、ひたすら無限ループを続けているところにEscキーを押すとループから脱出するようなプログラムを作ってみたいのです。 そういうプログラムは可能でしょうか? どうかご教授下さい。 使用コンパイラ:Visual C++ 2008 Express Edition

  • Windowsのバッチ処理のループカウンタについて

    Windowsのバッチ処理(パワーシェルだからシェルスクリプト風?) についてお尋ねします。 以下はループ処理です。%%iというところがループカウンタで%%iが整数です。この例では1から10です。 for /L %%i in (1,1,10) do ( ここでいろいろ処理 ) ここで質問ですが、整数とは1,2,3,...10ですが、01,02,03,....10のように2カラムを使うものとして利用することは可能でしょうか。 3桁だったら、001,002,,,100 のように変化していくようなものですが。文字列のような整数のような位置づけはよくわからないのですが。 バッチ内部は変数に型がないようです。フォーマット指定のような印象なのですが。 よろしくお願いします。

専門家に質問してみよう