• ベストアンサー

変数の中の数字をforで指定したい。

変数の中の数字をforで指定したい。 配列として、 $sort1[$t] $sort2[$t] ... $sort10[$t] と1~10と添え字をつけた変数を扱うときにfor等の繰り返し関数を使って利用したいのですが、旨く行きません。 for ($n=1; $n<=10; $n++){ $hensuu = '$sort' . $n . '[$t]'; echo $hensuu; } となどとして、$sort1[$t]、$sort2[$t]・・・に入っているデータを表示したいのですが、表示されるのは、 $sort1[$t] $sort2[$t] ・・・ となります。 どうすれば、この変数に入っている値を表示できるのでしょう? この例では10個までしか無いので、forを使わずに全部書いてしまえば良いのですが… 沢山あるときに、シンプルに処理できると助かります。 よろしくお願いします。

  • macus
  • お礼率76% (331/433)
  • PHP
  • 回答数1
  • ありがとう数3

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

  • ベストアンサー
回答No.1

for ($n=1; $n<=10; $n++){ $hensuu = ${'sort'.$n}[$t]; echo $hensuu; }

macus
質問者

お礼

早速の回答ありがとうございます! 出来ました!これでソースが相当シンプルになります。 本当に助かりました!ありがとうございます。

関連するQ&A

  • 変数の添え字をforで処理する方法。

    変数の添え字をforで処理する方法。 今朝、 http://okwave.jp/qa/q6000492.html で質問させていただき、この方法は解決したのですが、 $_POST[hensuu1] $_POST[hensuu2] .... と言う場合に、今朝の方法を応用して、 for ($n=1; $n<=10; $n++){ echo $_POST[{'hensuu'.$n}]; } と記述しても旨く処理できずに、 Parse error: syntax error, unexpected '{', expecting ']' in ・・・・・ のようなエラーが出てしまいました。 解る方いらっしゃいましたらご教授お願い致します。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • プログラミングの変数について質問です。

    プログラミングの変数について質問です。 次のプログラミングは自分で書いたプログラムの一部です。 void inputmonster(int x[][3], struct monster monster) { int i, s, t, m, n; for(t = 0; t < 2; t++){ s = 0; while (s < 1){ printf("player%dは好きなモンスターを3つ選んでください\n\n", t+1); for (i = 0; i<3; i++){ printf("%d体目を選んでください。\n\n", i+1); for(m = 0; m < 5; m++) printf("%d, %s\n", m+1, monster[m].name); scanf("%d", &x[t][i]); printf("%d体目 : %s\n\n", i+1, monster[x[t][i]-1].name); } printf("これでよろしいですか?\n"); for(i = 0; i<3; i++) printf("%d体目 : %s ", i+1, monster[x[t][i]-1].name); printf("1、はい 2、いいえ\n"); scanf("%d", &n); if(n == 1) s = 1; else s = 0; } } } これをコンパイルすると次のようなエラーが表示されます。 monsterbattle.c: 関数 ‘inputmonster’ 内: monsterbattle.c:497:63: エラー: 添字が付けられた値が、配列、ポインタまたはベクト ルではありません for(m = 0; m < 5; m++) printf("%d, %s\n", m+1, monster[m].name); ^ monsterbattle.c:499:45: エラー: 添字が付けられた値が、配列、ポインタまたはベクト ルではありません printf("%d体目 : %s\n\n", i+1, monster[x[t][i]-1].name); ^ monsterbattle.c:503:68: エラー: 添字が付けられた値が、配列、ポインタまたはベクト ルではありません for(i = 0; i<3; i++) printf("%d体目 : %s ", i+1, monster[x[t][i]-1].na me); どのように改変すればこのようなエラーを表示しないようにできるのでしょうか? 基本的な質問ではあると思いますが、是非教えていただけるとありがたいです。 よろしくお願いします。

  • shellで$入り変数に値を代入する方法

    shellで、変数への代入処理で困っています。 下記サンプルソースのように代入する変数自体にfor文で使用している変数が含められるようにしたいのですが、下記の通りだと実行できません。 うまく意図通りに動かす方法はございませんでしょうか? ---------------------------------------------------------------- #!/bin/sh #変数初期化 n00=0 n01=1 n02=2 n03=3 n04=4 #メインルーチン for i in 00 01 02 03 04 ; do temp=`eval echo '$'"n"${i}` #変数値をtempに格納 n${i}=`expr ${temp}+1` #各変数の値を+1する。 n${i}の部分をどのようにすればよいか不明 done ---------------------------------------------------------------- # 望ましい結果 echo ${n00} -> 1 echo ${n01} -> 2 : ※制約事項 ・ shのみ使用可能で、ksh,csh.bashは使用不可 ・ n[0]=0,n[1]=1・・・というように配列の使用は無し

  • URL変数が定義されているかどうか調べる

    PHPで、http://127.0.0.1/test.php?hensuu=Y というページをオープンした場合、 echo $hensuu; if (defined("hensuu")) { echo "Y"; } else { echo "N"; } 最初のecho文ではちゃんと"Y"を出力されるにもかかわらず、次のif文では"N"と出力されます。 URL変数が入力されたかどうかを確認するのにdefinedは使えないのでしょうか?

    • ベストアンサー
    • PHP
  • "$"を変数に入れる

    CGIを改造中です。 変なことをしているかもしれませんが、変数に$と別の変数を入れたいんです。 「xx.cgi?h=1」でCGIに変数を送り、$hensuuに「$hen1」と代入したいんです。 で、以下のようにやってみました。 $hensuu = '$hen'; もちろん、「print "$hensuu\n";」とすると「$hen」と表示します。 $hensuu = '$hen'$h;や $hensuu = '$hen'"$h";とすると、エラーになりストップします。 どのようにしたらうまくいくのでしょうか?

    • ベストアンサー
    • Perl
  • 配列

    適当な記述ですが、次を見てください。 void roll(int *c) { int n, b2[8]; if(t<3) { for(n=0; n<8; n++) b2[n]=c[n]; for(n=0; n<8; n++) c[b2[n]]=7-n; for(n=0; n<8; n++) printf("%d",c[n]); printf("\n"); t++; roll(c); } else t=0; } int main() { int b[]={3,6,4,0,7,2,5,1}; roll(b); for(n=0; n<8; n++) printf("%d",b[n]); //36407251が表示されるようにしたい。 return(0); } rollが何の関数かは省略しますが、rollにmainのb(ポインタ?)を渡し、ある処理をして,それでmainに戻ってきた時にb[]を表示すると、36407251が表示されません。 ポインタを引数にするってことはポインタでさしてるとこをrollで操作してるわけですよね? そうすれば変わって当然だとはおもいます。 でも関数1で関数2に配列1を渡し、その関数2の中でで配列1の値が変化しても、元の関数1にもどれば配列1のまま変化していないようにするにはどうすればいいですか? やはり もう1つ配列を用意しなきゃだめなのでしょうか。

  • 配列を使わずに、数字(連番)を使用した変数に値を代入したい。

    配列を使わずに、数字(連番)を使用した変数に値を代入したい。 お世話になっております。 配列を使わずに、数字(連番)を使用した変数($a1,$a2,$a3・・・)に、 forループを使って、値を代入したい。 #================================= for($i;$i<10;$i++){ $a??? = 10; #←ここがわかりません。 } #================================= どなたかご存知の方、ご教授ください。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • VBA:For構文のエラー、対策教えてください(初心者)。

    For構文で指定した数字以上の数字まで処理されます。例えば、 For i =1 to n (n=50) ・・・(処理) next i nは事前に求まっている値50です。しかし、処理されるのはiが1~51までとなります。デバック中にカーソルをnに当てると「50」となるのにiにあてると「51」となります。どうしてでしょうか?助けていただきたいです。よろしくお願いいたします。 ちなみに、処理の部分はIf構文で、配列を用いた短い行です。

  • バッチプログラムで変数の参照について

    Windowsバッチでの話ですが、 set file1=aaa set file2=bbb set n=1 としておき、"file1"にセットした変数の値を、"1"の部分を変数nを使用して参照したいのですがどうすればいいのでしょうか? echo %file%n%% のような感じでできると思ったのですができなかったもので。。  for文の中でnを増やしていきセットした全ての変数を参照したいと思っています。 以上よろしくお願いします。

  • PHPでユーザ定義関数を再帰的に呼び出したい

    <?php // 6次元配列を生成 for ($i = 0; $i < 3; $i++) { for ($j = 0; $j < 3; $j++) { for ($k = 0; $k < 3; $k++) { for ($l = 0; $l < 3; $l++) { for ($m = 0; $m < 3; $m++) { for ($n = 0; $n < 3; $n++) { $test[$i][$j][$k][$l][$m][$n] = $i . "-" . $j . "-" . $k . "-" . $l . "-" . $m . "-" . $n . "-"; } } } } } } test ($test); // 表示を行うテスト関数 function test ($test) { for ($i = 0; $i < count ($test); $i++) { // もし添え字に相当する値が未だ配列で構成されていた場合今の値で再帰的に表示テスト関数を呼び出す if(is_array ($test)) { test($test[$i]); } else {// 配列でなければ値を表示する。 echo $test . "<br />"; } } } ?> とに相当することを実行できるようにしたい。 理解できる程度にコメントを入れておいてください。 これをPHPで実行するとエラーになります。 そのエラーを回避して実行できるようにしてください。

    • ベストアンサー
    • PHP

専門家に質問してみよう