• ベストアンサー

echoの直後に変数(文字列ではなく)を記述?

echoの正しい記述方法についてご質問します。 echoの直後に変数(文字列ではなく)を記述する場合の質問です。この場合、echoを使用して「変数です」と出力(「」は、出力しません。)するには、以下の例の内、どの記述が正しい(又は最も良い)のでしょうか? 例1: <?php $var = "変数"; echo $var,'です'; ?> 例2: <?php $var = "変数"; echo ',$var,です'; ?> 例3: <?php $var = "変数"; echo '$var,です'; ?> また、上記よりもっと良い記述方法があれば、お教え下さい。 この質問の内容に関して詳細な情報が記載されているサイト等をご存知でしたら、お教え下さい。 よろしくお願いします。

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

  • ベストアンサー
  • nicolish
  • ベストアンサー率72% (13/18)
回答No.6

せめてコードを実際に実行してから質問しろ。 最初に提示されたコードのうち、出力が「変数です」になるのは例1だけだ。 例2は「,$var,です」になるし、例3は「$var,です」になる。こんなことは、人に聞く前に試せば分かる話だ。 なんでそうなるか分からなかったら、そう質問すればいい。 echo('あ', 'い', 'う'); // コンマ区切り とあった場合、echo文には「あ」「い」「う」の3つが引数として渡される。 この場合、echoはあ、い、うを順に出力する。だから出力結果は「あいう」になる。 echo('あ' . 'い' . 'う'); //ピリオド区切り の場合、echoには「'あ' . 'い' . 'う'」、つまりあ、い、うを連結したもの、要するに 'あいう' というひとつの文字列が渡される。 両者は同じではない。同じように動くのは、 「あを出力→いを出力→うを出力」と「あ、い、うを繋げたものを出力」とで同じ結果になるように見えるから、というだけに過ぎない。 > $var = "変数"; > echo ',$var,です'; 試したか?どう考えても試してないだろう。「,$var,です」が出力されるはずだ。 echoの引数は「,$var,です」という文字列なのでそのまま出力される。 ダブルクォートの場合は違った動作になる。singlecatさんのレスを参照。 > $var = "変数"; > echo $var.'です'; $varは、"変数"なわけだ。 つまりこれは、 echo "変数" . 'です';と同じ、という事になる。 echoには"変数"と'です'を繋げた「変数です」が引数として渡されるので、「変数です」と出力される。 「正しい」のは echo $var . 'です'; //ピリオド連結 echo $var , 'です'; //カンマ区切り echo "$varです"; //ダブルクォートで括る 速度は2番目が速いのだが、分かりやすいのは1番目。 3番目は予期せぬ動作をされる可能性が多少あるが、出力文字列が長い場合に読みやすい。

kitty1000
質問者

お礼

nicolishさん ご回答、ありがとうございました。 詳細なご説明につき、論理が良く分かりました。

すると、全ての回答が全文表示されます。

その他の回答 (5)

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.5

> どういう論理ですか? そういう関数(言語構造)だからです。 PHP: echo http://jp.php.net/echo > なぜ「,」コロンで$var, と'です'を連結できるのでしょうか 誰も「,」カンマで連結できるとは書いていません。 2つ引数を与えたので2つとも出力してくれているのです。 ただ、こういう動作をする関数(言語構造)は少ないので 「.」ピリオドで文字列として連結した方が分かりやすいですということです。

kitty1000
質問者

補足

tany180sxさん ご回答、ありがとうございました。 了解しました。

すると、全ての回答が全文表示されます。
  • singlecat
  • ベストアンサー率33% (139/418)
回答No.4

例: <?php $var = "変数"; echo $var,'です'; ?> →この結果は、「変数です」を表示します。エラーにはなりません。 やはり、echoの直後に変数を記述する場合(「,」で区切る場合)は、下記例のようにechoと変数の間に「'」(シングルクオート)又は「"」(ダブルクオート)が必要ではないのでしょうか? 例: <?php $var = "変数"; echo '$var,です'; ?> →この結果は、「$var,です」と表示されます。エラーになりませんが、  変数の値を置き換えて表示しませんし、カンマも文字として表示されています。 もしくは、出力した内容が異なるのでしょうか? どう表示したいのかを書いてもらえると解りやすいかも知れません。

kitty1000
質問者

補足

singlecatさん ご回答、ありがとうございました。 >どう表示したいのかを書いてもらえると解りやすいかも知れません。 出力は「変数です」としたいです。ちゃんと出力できました。ただ、singlecatさんに連結には「.」ピリオドを使用するとお教えいただきましたが、なぜ「,」コロンで$var, と'です'を連結できるのでしょうか(どういう論理ですか?)?、

すると、全ての回答が全文表示されます。
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.3

> 下記の例のような場合、エラーになると思うのですが。 なりませんでしたが、なにかエラーがでましたか? echo $var, 'です'; $var という変数と です という文字列を与えているだけです。 クォートがどうのというのは別問題です。 それとも $var という文字列を出力したいのですか?

kitty1000
質問者

補足

tany180sxさん ご回答、ありがとうございました。 >なりませんでしたが、なにかエラーがでましたか? エラーになりませんね。ただ、singlecatさんに連結には「.」ピリオドを使用するとお教えいただきましたが、なぜ「,」コロンで$var, と'です'を連結できるのでしょうか(どういう論理ですか?)?

すると、全ての回答が全文表示されます。
  • singlecat
  • ベストアンサー率33% (139/418)
回答No.2

singlecatさんのご説明からすると、以下の例1及び例2は「両方」正しい記述で、同じ出力結果($varは「変数」です)となるということですか? →試せば直ぐに解ると思いますが、同じになります。 echoの直後に変数を記述する場合(「,」で区切る場合)には、下記例のようにechoと変数の間に「'」(シングルクオート)又は「"」(ダブルクオート)は、必要なのでしょうか? 例: <?php $var = "変数"; echo ',$var,です'; ?> →必要ありません。 echoの直後に変数を記述する場合(「.」で連結する場合)には、下記例のようにechoと変数の間には、何も必要ないのでしょうか? 例: <?php $var = "変数"; echo $var.'です'; →何も必要ありません。  これは引数1に、$var.'です'を入れているからです。 ダブルとシングルコートに違いについてですが、 --------------------------------------- $var='ほげほげ'; echo '$var'; //-(出力結果)→$var echo "$var"; //-(出力結果)→ほげほげ --------------------------------------- となります。 シングルは中身を文字列として扱います。 ダブルは変数が含まれていれば、値に置き換えをします。

kitty1000
質問者

補足

singlecatさん ご回答、ありがとうございました。 singlecatさんのご回答で、一点分からない点があります。 singlecatさんのご回答では、echoの直後に変数を記述する場合(「,」で区切る場合)にはechoと変数の間に「'」(シングルクオート)又は「"」(ダブルクオート)は、必要ないとのことです。しかし、下記の例のような場合、エラーになると思うのですが。 例: <?php $var = "変数"; echo $var,'です'; ?> やはり、echoの直後に変数を記述する場合(「,」で区切る場合)は、下記例のようにechoと変数の間に「'」(シングルクオート)又は「"」(ダブルクオート)が必要ではないのでしょうか? 例: <?php $var = "変数"; echo '$var,です'; ?>

すると、全ての回答が全文表示されます。
  • singlecat
  • ベストアンサー率33% (139/418)
回答No.1

"ECHO"の場合は、複数の引数が指定できる仕様になっていますので、複数の引数で表示したい場合にカンマで"区切り"ます。 一方ピリオドは、文字列の"連結"になりますので、ECHO以外でも多様する事になります。 プログラムの読みやすさと言う意味では統一する方が良いので、ピリオドで連結するのが良いかもしれません。 ただ、PHPは言語的にいろんな書き方を許していますので、それらの長所は実際に扱った上で、自分なりのルールを確立する事だと思いますし、他人と協力して作業する場合は、みんなが同じルールで書く事をお勧めします。

kitty1000
質問者

補足

singlecatさん ご回答、ありがとうございました。 singlecatさんのご説明からすると、以下の例1及び例2は「両方」正しい記述で、同じ出力結果($varは「変数」です)となるということですか? 例1(「,」で区切る): <?php $var = "変数"; echo '$varは「', $var, '」です'; ?> 例2(「.」で区切る) <?php $var = "変数"; echo '$varは「'. $var.'」です'; ?> echoの直後に変数を記述する場合(「,」で区切る場合)には、下記例のようにechoと変数の間に「'」(シングルクオート)又は「"」(ダブルクオート)は、必要なのでしょうか? 例: <?php $var = "変数"; echo ',$var,です'; ?> echoの直後に変数を記述する場合(「.」で連結する場合)には、下記例のようにechoと変数の間には、何も必要ないのでしょうか? 例: <?php $var = "変数"; echo $var.'です'; よろしくお願いします。 ?>

すると、全ての回答が全文表示されます。

関連するQ&A