PHP変数の結合について

このQ&Aのポイント
  • php変数の結合について詳しく知りたいです。
  • phpで変数に連番で値を代入する方法を教えてください。
  • 二次元配列を使って変数に値を代入する方法も知りたいです。
回答を見る
  • ベストアンサー

php 変数(変数名)の結合について。

php 変数(変数名)の結合について。 こんばんは。 phpでホームページを作成しておりますが どうも上手く動かないのでこちらに質問させて頂きました。 変数名$testに数字を連番で付け、 $test0 = (値1,値2,値3,・・・) $test1 = (値1,値2,値3,・・・) $test2 = (値1,値2,値3,・・・) と各変数に配列を代入したいと考えています。 そこで、for文を使用し、 for($i=0; $i<10; $++) {  $test.$i = (値1,値2,値3,・・・) } と記述た所、上手く動作せずに困っております。 二次元配列での代入は可能だと思いますが $test[0] = (値1,値2,値3,・・・) $test[1] = (値1,値2,値3,・・・) $test[2] = (値1,値2,値3,・・・) for($i=0; $i<10; $++) {  $test[$i] = (値1,値2,値3,・・・) } ※ 実験してませんけど・・・。 なるべく二次元は使わないで処理したく思いますが やはり二次元配列のが合理的でしょうか・・・。 その点も踏まえ、何方かご教授頂ければ幸いです。 宜しくお願いいたします。

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

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

  • ベストアンサー
  • smileeeen
  • ベストアンサー率70% (21/30)
回答No.2

$test.$i = (値1,値2,値3,・・・) こちらの書き方がよくないと思います。 この処理を実行すると左辺は変数ではなく文字列の連結が行われ、 $test ⇒ 未定義なので空文字 $i ⇒ ループ毎に変化する数字 なので、内部的には 0 = (値1,値2,値3,・・・) といった意味のない処理が行われているかと思います。 PHPには可変変数という仕組みがあるので、そちらを使われてはいかがでしょうか。 下記のようなコードで実装できると思います。 for($i=0; $i<10; $++) {  // 変数名の設定  $name = 'test' . $i;  // 値の代入  $$name = array('値1','値2','値3',・・・); } また、この後にどのような処理を行うのか分かりませんが、個人的には二次元配列の方が分かりやすいと思います。 ちなみに二次元配列を作る場合$iを指定しなくても自動で添字が付与されます。 for($i=0; $i<10; $++) {  $test[] = array('値1','値2','値3',・・・); } そもそも同じ値を持つ変数を複数作るという処理なのであれば、無駄な処理の可能性が高い気がします。。

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

お礼

迅速なご返答有難う御座います。 また、説明文まで書いて頂いて感謝しております。 変数に数字を持たせてるのは この後の処理で無くなる可能性があるのです。 と言うのが、 $test1 = 0,1,0,3,・・・ $test2 = 0,0,0,0,・・・ $test3 = 50,1,0,0,・・・ 等、配列の数値は色々可変するのですが 0しか無い変数は削除。 ただ、変数名の連番は変動させたくない(固定で管理したい)為 二次元で処理していません。 二次元の場合、 $test[0] = 0,1,0,3,・・・ $test[1] = 0,0,0,0,・・・ $test[2] = 50,1,0,0,・・・ と代入され、0の値は無いモノと認識され $test[0] = 0,1,0,3,・・・ $test[1] = 50,1,0,0,・・・ と、上に詰められるのかと懸念しています。 実験すれば分かる事なんですけど・・・。 上に詰められないのでしたら二次元でも問題無い為、 一度二次元で確認してみようと思います。 本当に有難う御座いました。

その他の回答 (1)

回答No.1

${'test'.$i} = array(値1,値2,値3,・・・);

buzinesswa
質問者

お礼

迅速な返答有難う御座います。 知識に乏しい自分の知識が一つ増えました。 有難う御座います。

関連するQ&A

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

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

    • ベストアンサー
    • Perl
  • PHP 多次元配列変数のデータ受け渡し。

    PHP 多次元配列変数のデータ受け渡し。 こんばんは。 先日からPHPでホームページを作成しています。 この度、二次元配列に代入した数値(文字列)を 二次元配列そのままで次のページに受け渡したいと考えています。 ※また、同時に新しく入力した値も受け取りたい。下記の name="data" の様に。 《1page.php》 → 《2page.php》 の受け渡しをする場合、 《1page.php》二次元配列作成 <?php for ($i=0; $i<10; $i++) { $test[] = array($_POST['moziretsu'],$_POST['suuretsu'],$_POST['suuretsu']); //文字・数字は毎回異なります。 } ?> <html> <body> <?= $test[2] ?><br> <?= $test[4] ?><br> <form action="2page.php" method="post"> <input type="text" name="data"><input type="submit" name="submit" value="次"> </form> </body> </html> 《2page.php》二次元配列受け取り <?php $aaaa = $_POST['data']; ?> で、新規に入力した数値は取得出来ても 二次元配列の $test はどの様に取得すれば宜しいのでしょうか? グーグル等で検索させてもらっても 希望の記事に辿り着かず困っております。 もしかしたら出来ないかも知れないので その場合は1page.phpで二次元配列をしないで 2page.phpにデータを送るり、2page.phpで二次元にする等の方法を考えなければなりませんし・・・。 書き方も悪くとても小さい初歩的な質問かとは思いますが 何卒、宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • 変数名の結合

    $a1 = 'test'; $a2 = 'hello'; $a3 = '1'; echo $a.$a3; 表示例 test これは間違っていますが、こういった感じで変数名を結合させて変数名としたい場合どうしたらいいのでしょうか? constantみたいな感じの変数バージョンがほしいんですが…。

    • ベストアンサー
    • PHP
  • PHPでFORMから来る変数名を変数にするには

    PHPでFORMから来る変数名を変数にするにはどうしたらよろしいでしょうか? 可変変数など調べたのですが、値を変数にすることは出来ても変数名を変数にする事は難しいようです。 <form action="reg.php"> <input type = "text" name = "comment"> <input type = "submit"> </form> このform内のnameが動的に変わるプログラムで,reg.phpにおいて名前(今ならcomment)を変数に格納したいと思っています。 reg.php 本来なら $comment = _REQUEST['comment']; とすると思うのですが、commentが動的に変動する場合、_REQUEST内をどう書き換えれば良いかが分からず困っています $dynamic_name = _REQUEST['ここをどう書けばよいでしょうか'] このことを考えてから今はform内ですが、formでなくてもどうやって書いてよいか分からず疑問に思いました 例えば $test = 'abc'; としたとき $test_name にtestという文字列を入れたい場合(つまりabcの変数名)どうやって入れたらよいのでしょうか?(もちろんtestと言う名前は動的に変わります) 詳しい方いらっしゃいましたらご回答いただければと思います。 良いアドバイスございましたら教えてください よろしくお願いします

    • 締切済み
    • PHP
  • 変数名をプログラムで変える

    変数名$keyにある数字を一文字ずつ$w1、$w2・・・に入れていきたいと考えています。 if (isset($key)){ for($i=1;$i<strlen($key);$i++){ $w[$i]=substr($key,$i-1,1); } 変数w1、w2をfor文の中で変化させていきたいのですが、どのようにすればいいのでしょうか。 上記の$w[$i]ではだめでした。(配列になっちゃうのかな) 例えば$key=5432の場合、 $w1=5; $w2=4; $w3=3; $w4=2; としたいのです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHP ループでの文字結合の流れ

    最近PHPの勉強を始めたばかりの 超初心者ですが 質問をさせていただきますの よろしくお願いいたします! 勉強しているテキストで「ループのなかで文字を結合する」 というサンプルがあります。 ---------------------------------------- <?php $i = 1; $zzz = ""; while ($i <= 5) { $zzz .= $i."回目"; $i++; } echo $zzz; ?> ---------------------------------------- 1回目2回目3回目4回目・・・が結果になります。 サンプルでは$zzz変数の値は””だけで何も入っていないようですが 適当な値、仮に「ooo」と入れてみると ooo1回目ooo2回目ooo3回目ooo4回目・・・ となると素人な私は考えてしまいますが 実際はooo1回目2回目3回目4回目・・・になります。 $zzz変数の値""の流れはいったいどうなっているのでしょうか? どこがどう結合されているのでしょうか?

    • ベストアンサー
    • PHP
  • 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
  • 変数名の間接指定

    .NET2008を使用しております。 変数 cell_1 ~ cell_100 に 数値1~100 を  FOR NEXT を使用して代入する場合 どうやって変数名の間接指定 をすればよろしいのでしょうか? 配列は使用しません。  よろしくお願いします。

  • PHPコードの読解お願いいたします

    PHP初心者です。 環境→XAMPP1.7.0でアパッチなど一括ダウンロード OSはヴィスタ 以下コード中分からない点がありますので、ご指導よろしくお願いいたします。(細かい点は省略しています) なお●の部分が分からない点です。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <?php $city=array("東京""大阪""名古屋""神奈川") ?> <h2>出発地のご案内</h2> <form> <select name="city"> <?php foreach($city as $name=>$value){  ● print "<option value={$value}>{$value}</option> } ?> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ●・・foreach内の$nameと$valueの変数はそれぞれ何を表わしているのでしょうか。 私の教科書的理解で申しますと、$nameはキー用の変数を表わし、$valueは値用の変数を表すものだと思っております。 そこから考えると、$cityに格納されている”東京"、"大阪"、"名古屋"、"神奈川”それぞれの文字列はキー用の$nameに格納される、なら残った$valueには何が入るのでしょうか。 そもそもforeach($配列名 as $キー用の変数=>$値用の変数)という記載の仕方ができるのは、事前に配列にて 例えば$配列名=array("キー0"=>値0、"キー1"=>値1・・) といった記載がされている場合に有効なのではないかと思うのですが。 繰り返しますが、おそらく$cityに格納されているそれぞれの文字列がキー変数を表わす"$name"に代入されると思うのですが、それでは値用の変数$valueにはいったい何が格納されるといういうのでしょうか。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • 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

専門家に質問してみよう