• ベストアンサー

ダブルクウォートやヒアドキュメント内での変数や配列を使った計算の表記方法?

素人の素朴な疑問なんですがよろしいでしょうか? echo等で出力する "" (ダブルクウォーテション)やヒアドキュメントの「中で」 変数や配列を使った計算をすることってできますか?たとえば $mynum = 5; echo "最初の計算結果は {$mynum}+100 です。"; //105 $myarray = array(8,13,25); echo "2番目の計算結果は {$myarray[2]}+100 です。"; //125 のようなイメージなんですが・・・。 素直に""の外に出して計算し、ピリオドで結合するとか、 echoより前で変数や配列の計算を済ませておくというのが筋かと思うのですが、 たとえばめったに条件を満たさないif文中のechoの中だけで、一回限りで使う時など、 ""の外に出したり、元の変数を変化させたり、新しい変数を設けたりしないで済んだらなぁ~、 と思いまして。できなければできないで何の問題もないんですが、 よろしければご教授ください。m(_ _)m

  • r_bel
  • お礼率95% (81/85)
  • PHP
  • 回答数1
  • ありがとう数2

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

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

echo "最初の計算結果は" . ($mynum + 100) . "です。"; この記法でやったほうがいいです。 特に、あまり起こらない演算なのであればこそ、後で見たときに何が書かれているかが明快な記述のほうが良いと思います。 そして、PHPでは質問のような記法はサポートされていません。 http://php.morva.net/manual/ja/language.types.string.php#language.types.string.parsing こちらが参考になります。

r_bel
質問者

お礼

hogehoge78さん、さっそくのご回答ありがとうございます。 やはり素直に""の外に出して計算し、ピリオドでの結合がベスト、 ヒアドキュメントに対しては、事前に計算して変数や配列のみの形で使うしかない、 というふうに理解しました。(違ってたらすいません。(^^;) おかげさまでだいぶスッキリしてきました。ありがとうございました。

関連する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
  • ヒアドキュメントの制約?

    PHP5を使っています。 ヒアドキュメントで以下のように書きましたが1ではエラーになり2ではエラーになりません。 配列の添え字の前後にスペースを付けて、ソースを見やすくしていたのですが、ヒアドキュメントでは、これはエラーになるのでしょうか? 理由が知りたいです。 $ary_dat = array("あ", "い", "う"); (1) echo <<<END_OF_DAY $ary_dat[ 0] END_OF_DAY; (2) echo <<<END_OF_DAY $ary_dat[0] END_OF_DAY;

    • ベストアンサー
    • PHP
  • 配列の結合

    変数1 Array ( [A] => あいうえお ) 変数2 Array ( [B] => わおん ) というような二つの変数の配列を Array (   [A] => あいうえお   [B] => わおん ) というように、ひとつの変数内に結合する方法はないでしょうか?

    • ベストアンサー
    • PHP
  • 多次元配列?配列のキー?変数の型?

    PHP勉強中のものです。 予定通りの動作にならんく四苦八苦しています。 どのように修正すれば予定通りになるのか考え方のアドバイスなどお願いします。 処理したいこと 変数$xxxの先頭の文字と最後の文字をsubstr()で取り出し$aaaと$bbbに別けそれぞれ代入しキーとして多次元配列に代入した配列要素を指定してechoで出力したい 試してみたこと $aaa1と$bbb1に直接整数を代入してみたところ、echoで出力された キーになる変数を整数型として変数に代入してみたが希望通りの動作にならなかった。 なにかアドバイス頂けると助かります。 $array = array( "0" =>array("あいうえお","かきくけこ"), "1" =>array("さしすせそ") ); $xxx = "0-1"; $aaa = substr($xxx,0,1); $bbb = substr($xxx,2); $aaa = (int)$aaa; $bbb = (int)$bbb; echo $array[$aaa][$bbb]; //出力されない $aaa1 = 0; $bbb1 = 1; echo $array[$aaa1][$bbb1]; //出力された $aaa = (int)$aaa; $bbb = (int)$bbb; echo $array[$aaa][$bbb]; //出力されない

    • ベストアンサー
    • PHP
  • 連想配列を含むヒアドキュメントの書き方

    連想配列を含むヒアドキュメントの書き方を教えてください。 以下のコードならうまく行きました。 -(1)-------------------------- $SS = $_SERVER['PHP_SELF']; $html_txt = <<<EOT ($SS) EOT; echo $html_txt; ------------------------------ これを一時的な変数を使わずに以下のようなコードで実行したいです。 -(2)-------------------------- $html_txt = <<<EOT ($_SERVER['PHP_SELF']) EOT; echo $html_txt; ------------------------------ これを実行すると # Parse error: syntax error, unexpected '"', # expecting T_STRING or T_VARIABLE or T_NUM_STRING in … というエラーが出てしまいます。 最悪、(1)でもいいと思っています。しかし(2)のようなケースでもできてもいいのではないかと思うのですが、エスケープを入れたり「$_SERVER["PHP_SELF"]」などとクォーテーションを変更したりしてもうまく行きません。 質問は以下です ・(2)のような記述はPHPでは不可能なのでしょうか? ・もし可能なら(1)の何が悪いのか、どうすればうまく行くのかを教えてください よろしくお願いします。

    • ベストアンサー
    • PHP
  • 配列の初期値を設定

    配列を宣言する際、初期値として0を設定する事は可能ですか? myArray = new Array(); trace(myArray[0]); ←この結果をundefinedではなく0にしたいです。

    • ベストアンサー
    • Flash
  • PHPのヒアドキュメントの中で多次元配列

    PHP4を用いているのですが、ヒアドキュメントの中で多次元配列が思うとおりに展開されずに困っています。 echo <<<EOM <tr> <td>$req_list_array[$j]['Req_local']</td> <td>$req_list_array[$j]['Req_point']</td> <td>$req_list_array[$j]['User_name']</td> <td>$req_list_array[$j]['Req_time']</td> </tr> EOM; 上記のように打っても、 Array['Req_local'] Array['Req_point'] Array['User_name'] Array['Req_time'] と表示されてしまいます。 うまい解決方法をご存知の方よろしくお願いします。 ${req_list_array[$j]['Req_local']} こんな風にしてみたら、エラーが発生してしまいました。

    • ベストアンサー
    • PHP
  • このような配列の場合の計算法はどうすればいいのですか?

    プログラミング言語(C言語、JavaScript、PHP)を勉強し始めたのですが、以下のような場合の計算法がわかりません。 もう2日悩んでいます…。 ■配列の中身が、3つあるとします。たとえば、array(10,20,30)とします。 このとき  printf((10*20) + (20*30) + (30*10)); という計算式の結果を求めたいです。 ■配列の中身が、4つあるとします。たとえば、array(10,20,30,40)とします。 このとき  printf((10*20*30) + (10*20*40) + (10*30*40) + (20*30*40)); という計算式の結果を求めたいです。 ■配列の中身が、5つあるとします。たとえば、array(10,20,30,40,50)とします。 このとき  printf((10*20*30*40) + (10*20*40*50) + (10*20*30*50) + (10*30*40*50) + (20*30*40*50)); という計算式の結果を求めたいです…(何度もすみません)。 上記のように配列の中身の個数と値が未確定の場合はどのようなコードで計算させればよいのでしょうか?配列の個数は1~10個を想定しております。 C言語、JavaScript、PHPのどの方法でもアプローチ法は同じだと思うので、いずれかの言語でかまいませんのでアドバイス頂ければと思います。よろしくお願いします。

  • 配列の記述

    配列@arrayの中からある特定の順番の配列を取得したいです。 $array[1]の1について$nなどの変数を使いたいのですが、 []の中に変数をどう記述すればいいのでしょうか? $n=100; print "$array["."$n"."]"; print '$'."array["."$n"."]"; ???わからない???

  • フォームを使った配列変数の受け渡し

    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

専門家に質問してみよう