• ベストアンサー

可変変数にアロー演算子を使いたい

例えば、 /** $hoge->appale1 は 10 $hoge->appale2 は 20 $hoge->appale3 は 30 */ このように定義されていたとします。 それを可変変数で for( $k=1; $k<=3; $k++ ){  $dynamicName = 'hoge->appele' . $k;  print "apple{$k}は" . $$dynamicName . 'です'; } のように出力したいのですが、アロー演算子を含んだ可変変数だと$hoge->apple1の数値を出力してくれません。 どのように記述すればいいでしょうか? また、可変変数で不可能であれば代案でも結構です。 お分かりになる方、ご回答お願いいたします。

noname#113749
noname#113749
  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.1

こういうことでは意図に沿わないでしょうか。 class hoge { var $var1 = 10; var $var2 = 20; var $var3 = 30; } $hoge =& new hoge(); for($i=1;$i<=3;$i++){ $property = "var".$i; print "var{$i}は{$hoge->$property}です。"; } appaleなのかappeleなのかよくわからないので適当に書き換えました。

noname#113749
質問者

お礼

ありがとうございます。 ->の後にも変数が使えたのですね!

関連するQ&A

  • アロー演算子について

    php素人です アロー演算子についてわかりやすく教えてください クラスとか使ったことありませんのでアロー演算子をみるとパソコンの前から逃げ出したくなります 質問1 アロー演算子を使うときはクラス内の変数などにアクセスするときだけですか?(普通はclassを使わない場合、アロー演算子は使わないのですか?) 質問2 他のファイルから呼び出す場合はrequire_onceなどをつかってからアロー演算子でよびだすのですか? 質問3 PDOもrequire_onceなどで呼び出してからつかってるのですか? 質問4 下記のようにclassを定義する前にnewでオブジェクトを出現させても大丈夫なんですか? 質問5 アロー演算子とはクラスから変数や関数を使うためのものですか?下記の場合、 $hoge変数にclass numberdayoの処理が詰まっているってことでしょうか? $hoge = new numberdayo(); $hoge ->number = 2; $hoge ->numberdayo(); class numberdayo{ public $number; function numberdayo(){ print($this -> number); } } 質問6 別の質問ですが、classをつかってない単なる関数functionは定義する前に呼び出せますか? hoge(); function hoge(){ print("関数"); } よろしくお願いします

    • ベストアンサー
    • PHP
  • 可変変数出力方法

    以下のプログラムで ========================== <html> <title>variable_variable</title> <body> <?   $number=1;   $var_1="one"; $var_2="two"; if($number==1) { $output="var_1"; } else if($number==2) { $output="var_2"; } print"$$output";//可変変数A print($$output);//可変変数B ?> </body> </html> ==========================   print"$$output";//可変変数A print($$output);//可変変数B 可変変数Aは$var_1 可変変数Bはone と出力されます。 どちらも内容は同じモノなのですが。 普段出力方法は print""; という方法を使用しているのですが、 可変変数には print(); という方法を取らないとダメなのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • htmlで変数の表示

    printで出力する以外にHTMLに簡単に変数を表示する方法ってありますか? <?php $hoge = "晴れ"; ?> ここからHTML、直接変数を表示したい 今日は$hogeです

    • ベストアンサー
    • PHP
  • 正規表現の置換演算子に変数を埋め込むことをしたいのですが

    正規表現の置換演算子に変数を埋め込むことをしたいのですが $a = 'abcd0001'; $b = '0005'; $a =~ s/abcd([0-9]{4})/abcd\$b/; #=> $a=[abcd$b] print "\$a=[$a]\n"; とすると、abcd$bとなります。 置換演算子1行で、abcd0005とする方法はあるのでしょうか?

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

    $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
  • perl 条件演算子 範囲演算子についてです

    演算子 条件演算子 条件演算子 ?: は条件式の値により、2者のうちのどちらかを選択します。 $a=($x<10)?10:20; 変数$aの値が$x<10という条件において、真であれば:左側の10を選び、偽であれば:右側の20を選ぶ。 $a=10; 変数$aに10を代入する。 $a==5?print "5です。\n":print "5ではありません。\n"; 条件式でaが5であれば:左側の print "5です。\n"を表示します。 条件式でaが5でなければ:右側の print "5ではありません。\n"を表示します。 $a==10?print "10です。\n":print "10ではありません。\n"; 条件式でaが10であれば:左側の "10です。\n" を表示します。 条件式でaが10でなければ:右側の "10ではありません。\n" を表示します。 範囲演算子 範囲演算子 .. は、左側の値から右側の値まで、1つずつ増やした値の集まりです。 値には、半角英数字の数値または文字列が指定できる。 print 3..5; 3 4 5 と表示する。 一応、訳を下に書いたのですが合っていますでしょうか。

  • issetで変数の存在をチェックした際に・・・

    以下のようなスクリプトについて質問です。 if(!isset($hoge)){echo"hoge";} 上記のスクリプトの結果、$hogeが定義されていないはずなのに、hogeが出力されていたので、試しに直前にecho$hoge;と加筆してみたところ、「Notice: Undefined variable: hoge in・・・」が出ました。 $hogeが未定義ならhogeが出力されないはずなのに、hogeが出力された上に$hogeの未定義noticeが出る理由が分かりませんでした。 理由が分かる方(または想像がつく方)、ご教示ください。

    • ベストアンサー
    • PHP
  • 変数の構造について

    初歩的な質問ですみません。 以下のような変数はどんな構造になっているのでしょうか? 配列の中にハッシュが入っているのかと思っているのですが・・ $list = [ { id => '1', name => 'hoge' }, { id => '2', name => 'fuga' }, { id => '3', name => 'foo' } ]; 上記の$listにあるidを全て出力しようとして以下のようにしても 出力することができません。 foreach ($list) { print $_['id']; print '<br>'; } また「[]、{}」は何を意味するのでしょうか? 当方、PHPには詳しいのですがPerlは最近始めたばかりでよく理解できておりません。 お手数ですが、どなたかお分かりになる方いましたらご教授いただければと思います。

    • ベストアンサー
    • CGI
  • 可変長コマンドとその中のファイル名を変数に格納するには?

    宜しくお願い致します。 可変長のコマンド(空白が可変個ある文字列)とそのコマンド文字列内のtxtファイル やdivファイルやpsファイルやtexファイル名(ひとコマンドにファイル名は1つだ け)を取り出し 変数に代入するスクリプトtest.shを考えています。 #!/bin/bash -x COMMAND= FILE= のイコールの右辺には何と記述すればいいのでしょうか? 具体的には $ ./test.sh hoge foo hoe.dvi hoehoe hogehoge … とした時(コマンド分の長さは可変) COMMANDに「hoge foo hoe.dvi hoehoe hogehoge …」という文字列、 FILEに「hoe.dvi」 を代入したいのです。

  • 【smarty】予約変数に可変変数

    POST送信されたデータが複数あります。 <{$smarty.post.address1}> <{$smarty.post.address2}> <{$smarty.post.address3}> というように書けば取得できるのですが、項目数が可変な為 ループで処理できないものかと思います。 そこで下記のように試しましたがエラーになります。 assignのvalueの記述が間違ってるような気もしますが、わかりません。 そもそも、予約変数はこのような使い方はできないのでしょうか? <{section name=cnt loop=$kosu}> <{assign var="str" value='$smarty.post.address'|cat:$smarty.section.cnt.iteration}> <{$str}>←$smarty.post.address1のデータを出力してほしい <{/section}>

    • ベストアンサー
    • PHP