変数名の代入方法について

このQ&Aのポイント
  • 変数名の中に変数を代入する方法について説明します。規則的な代入方法を紹介し、エラーが発生する場合の解決策も示します。
  • ソースコードの一部で変数を代入する方法について説明します。ループ処理を利用して簡潔なコードで代入できますが、エラーが発生する場合があります。
  • 変数名の代入方法を解説します。ソースコードの例を用いて具体的な手順を説明し、代入時に起こるエラーに対する対処法も説明します。
回答を見る
  • ベストアンサー

変数名の中に変数を代入する方法について

下記のようなソースがあるのですが、下記の部分については規則性があります。 $test1a = $test2a; $test2a = $test3a; $test3a = $test4a; そのため、上記を下記のような感じで書きたいと思ったのですが、下記ではエラーになってしまい、どのように記述すれば良いか分からなかった為、アドバイスいただける方がいらっしゃいましたら、ご教示の程よろしくお願いします。 for($i=1; $i<4; $i++) { $test . $i . a = $test $i+1. a; } 【ソース】 <?php $test1a = 1; $test2a = 2; $test3a = 3; $test4a = 4; echo "test1a = " . $test1a; echo "<br>"; echo "test2a = " . $test2a; echo "<br>"; echo "test3a = " . $test3a; echo "<br>"; echo "test4a = " . $test4a; echo "<br>"; $test1a = $test2a; $test2a = $test3a; $test3a = $test4a; $test4a = ""; echo "test1a = " . $test1a; echo "<br>"; echo "test2a = " . $test2a; echo "<br>"; echo "test3a = " . $test3a; echo "<br>"; echo "test4a = " . $test4a; echo "<br>"; ?> 以上、宜しくお願いします。

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

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

  • ベストアンサー
  • xKENx
  • ベストアンサー率65% (21/32)
回答No.1

元ソースを活かして書くなら、こんな感じでいかがでしょうか。 for($i=1; $i<4; $i++) { $var_name_current = 'test' . $i . 'a'; $var_name_next = 'test' . ($i + 1) . 'a'; $$var_name_current = $$var_name_next; } 配列を使うところかな、とは思いますが…

iroha_168
質問者

お礼

ご回答ありがとうございます。 ご教示いただいたソースで意図した動作となりました。 それとosamuyさんもご指摘のとおり、配列を使う方が良さそうですね。 ともあれ、このたびはどうもありがとうございました。 以上、よろしくお願いします。

その他の回答 (1)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

ANo.1さんが言っているように、何故配列を使うほうが良いかと。 $test_a = array( 1, 2, 3, 4 ); array_shift( $test_a ); # 先頭要素を消して、前に詰める。 array_push( $test_a, '' ); # 末尾に空白を追加。 逆に、配列を使わない理由が分からなかったり。

参考URL:
http://www.ideone.com/gMS8P
iroha_168
質問者

お礼

ご回答ありがとうございます。 確かに配列を使う方が良さそうですね。 ちなみに現在作成しているものの関係上、途中が削除され、その後が1つずつずれることもあるのですが、その場合、下記のようにunsetを使えば大丈夫そうな感じですね。 http://dhive.jp/blog/yama/?p=2193 以上、よろしくお願いします。

関連するQ&A

  • 2つの変数(文字)を組み合わせて1つの変数として認識させる方法?

    PHPの初心者チュートリアルサイトやphp manualなども見てるのですが あまりに基本的過ぎるのか、どうしてもわからないので教えてください。 $myarray1 = array("a","b","c"); $myarray2 = array("d","e","f"); $myarray3 = array("x","y","z"); という配列があるとして、 これをforループで使いたいと考えました。 例えば無理やり書くと下記のようなイメージなのですが やはりこのようなあてずっぽうではうまく行かず・・・。 for( $i = 1; $i<= 3; $i++ ){ echo {$myarray.$i}[0] . "<br/>"; } 「$myarray.$i」を$myarray1~3と認識させてa,d,xの3つを出力することはできますか?

    • 締切済み
    • PHP
  • フォームを使った配列変数の受け渡し

    PHP初心者です、よろしくお願いします。 フォームからPHPで配列変数を受け渡すことを考えています。 一次元配列はうまく渡せましたので、これを二次元にしましたところ、 うまく渡せません。基本的なPHPの文法がわかってないので、つまづい ています。多分、配列変数の記述方法がおかしいのだと思うのですが・・。 ご教授よろしくお願いします。 <html> <body> <form method = "POST" action ="test2.php" > <?php //データ渡し側 for ($i = 0 ;$i < 2 ;$i ++){ for ($j=0 ;$j <2;$j ++ ){ echo ("<input type ='text' name = 'data[$i][$j]' size ='10'>\n"); echo ("<br>\n"); } echo ("</tr>\n"); } ?> <input type="submit" name ="sbmit" value="data_input" > </form> </body> </html> <?php //データ受け側 for ($i = 0 ;$i < 2 ;$i ++){ for ($j=0 ;$j < 2;$j ++ ){ $tmp_data[$i][$j] = $_POST["data"][$i][$j]; echo ("$tmp_data[$i][$j] <br>\n"); } } ?> <html> <body> <form method = "POST" action ="test2.php" > <?php for ($i = 0 ;$i < 2 ;$i ++){ for ($j=0 ;$j <2;$j ++ ){ echo ("<input type ='text' name = 'data[$i][$j]' size ='10' value='$tmp_data[$i][$j]'>\n"); echo ("<br>\n"); } } ?> </table> <input type="submit" name ="sbmit" value="in" > </form> </body> </html> 実行結果は、 Array[0] Array[1] Array[0] Array[1] と表示されて、実際の入力した値が反映されません。

    • ベストアンサー
    • PHP
  • 変数の中の<br>を消したい

    度々お世話になります。 変数にセットした値をブラウザに表示させるために改行の<br>を入れているのですが、次ページでメール送信すると、当然<br>と記述されております。この<br>を取り除く関数等方法はありませんか?ご教授お願いいたします。 <?php $item="レンズ<br>めがね"; echo $item; ?> <input type="hidden" name="item" value="<?php echo $item ?>">

    • ベストアンサー
    • PHP
  • POSTの配列名に変数を使用したい

    お世話になります。 ↓このあたりを見てみたのですが解決せず。。。 http://ml.php.gr.jp/pipermail/php-users/2002-February/005209.html --質問内容-------------------------------------------------------------------- ●$_POSTの配列名に変数を使いたい場合は、どのように書くのが正しいのでしょうか? ------------------------------------------------------------------------------ --状態------------------------------------------------------------------------ <? 1 for($a = 1; $a < 11; $a++) { 2 echo '<select name="item' . $a . '_count">' . "\n"; 3 for($i = 0; $i < 11; $i++) { 4 echo '<option value="' . $i . '">' . $i . '</option>' . "\n"; 5 } 6 echo "</select>\n"; 7 } ?> 上記は入力フォームの一部で、セレクトボックスを10個ほど吐き出しています。 このフォームの他の項目でエラーがあった際に、 選択していた値がページロード時に選択されるようにしたいと思っています。 その際は、 if ($i === $_POST[item . $a . _count]){ echo 'selected="selected"'; } か、 if ($i === $_POST[item . $a . _count]) echo 'selected="selected"'; を4行目の辺りに加えれば良いかなと思い、 付け加えてみるのですが、シンタックスエラーが出てしまい、 訳がわからなくなってしまいました。 ------------------------------------------------------------------------------ お手数ですが、ご教授いただければ幸いです。

    • ベストアンサー
    • PHP
  • 変数名を変数で指定するのに$_POST[

    http://oshiete1.goo.ne.jp/qa2691790.html の#1さんに,変数名を変数で指定できることを教わりました. 下記の3行目のように,です. for ($i=1;$i<=5;++$i){ if (${"var".$i}=="") { ${"errMsg".$i}=$i."が未入力"; } } ここで, (1) $_POST["form"] には「str」という文字列が入っています. (2) $Var には「10」という数値が入っています. (3) これらを結合し, どうしても $_POST["str10"] みたいな変数を作らなければならないのですが, ・<? echo $_POST["str" . $Var]; ?>では何も起こらず. ・<? echo $_POST[{"str" . $Var}]; ?>などと{}で括っても, Parse error: parse error, unexpected '{', expecting ']' in C:\temp.php on line 10. みたいなエラーになります. どういうのが正しい書き方でしょうか?

    • 締切済み
    • PHP
  • JavaScript 変数をメソッドに代入する方法

    <SCRIPT LANGAGE="JavaScript"> var prop=new Array("title","lastModified","bgColor","fgColor","alinkColor","linkColor","vlinkColor"); for(i=0; i<7; i++){ document.write(document.prop[i],"<BR>"); } </SCRIPT> お世話になります。 上記ソースが動きません。 オブジェクトのメソッドに配列を代入することはできるのでしょうか?

  • URLに含まれた変数の値が0のときの動作

    はじめて質問させていただきます。よろしくお願いいたします。 質問ですが、 http://xxx.xxx.co.jp/xxx/index.php?a=situmon&cid=0 の時に、 $line="./test.txt"; for($i=0;$i<sizeof($line);$i++) { list($title,$comment)=explode("<>",$line[$i]); if($cid == $i ) { echo $title . "<hr>".$comment . "<br>\n"; } } このようなスクリプトで一行取り出したいと思っています。 ですが、$cidが 0 以外の場合は取得できるのですが。 0 の場合取得できません。 どのようにすれば取得できるようになるのかご教授ください。 ------------------ PHP Version 4.3.10 register_global=on $line="./test.txt"; for($i=0;$i<sizeof($line);$i++) { list($title,$comment)=explode("<>",$line[$i]); if($cid == $i ) { echo $title . "<hr>".$comment . "<br>\n"; } }

    • ベストアンサー
    • PHP
  • phpで5で割って余りを表示させない方法

    phpで5で割って余りを表示させない方法を探しています。 例えば <?php for ($i = 1; $i < 15; $i++) { echo $i; if ($i % 5 == 0) { echo "<br />"; }} ?> を実行させた場合 12345<br/> 678910<br/> 11121314 となりますが、この場合11から14までを表示させないようにすればどうすればできますか?

    • 締切済み
    • PHP
  • 文字の見た目の長さを取得する方法について

    文字の見た目の長さを取得し、全角■(半角■×2)に収まっているかチェックしようと思い、下記のソースを記述したのですが、特定の文字で意図した結果になりませんでした。 【ソース】 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>title</title> </head> <body> <?php $array = array( "1234567890" // 1. 10とカウントしたい , "12345" // 2. 10とカウントしたい , "侉侉侉侉侉" // 3. 10とカウントしたい , "※※※※※" // 4. 10とカウントしたい , "112233" // 5. 9とカウントしたい ); for($i=0; $i<count($array); $i++) { // 3がNG echo strlen(mb_convert_encoding($array[$i], 'SJIS', 'UTF-8')); echo "<br />"; // 4がNG echo mb_strwidth($array[$i], 'UTF-8'); echo "<br />"; echo "<br />"; } ?> </body> </html> 【結果】 10 10 10 10 5 10 10 5 9 9 http://hamamuratakuo.blog61.fc2.com/blog-entry-421.htmlのUTF-8の日本語のバイト数が原因かもと思ったのですが、どうすれば文字の見た目の長さを取得できるか分からなかった為、アドバイスいただける方がいらっしゃいましたら、ご教示の程よろしくお願いします。 以上、よろしくお願いします。

    • ベストアンサー
    • PHP
  • 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・・・というように配列の使用は無し

専門家に質問してみよう