PHPで文字列を画面に表示させる際には、その内容に変数を使用することができる。文字列に対してどのように変数を差し込んでいくのかを紹介していこう。
PHPにおける文字列の中の変数展開について
PHPにおける文字列の変数展開とは、すなわち、文中における変数の値出力のことだ。具体的な方法から示していこう。
ダブルクオートを使った文字列展開
「“」ダブルクオートによって、文字列の中で変数を展開することが出来る。
まずは $str という名前の変数を宣言して文字列を代入し、それを表示させてみよう。
1 2 3 |
<?php $str = "天国"; echo "此処から先は、地獄か $str だ。選ぶのはあなた次第。"; |
出力結果は下記のようになる。
見事に $str という変数の中に値が文字列中に出力された。
PHPには同じような文字列を定義する方法として、「‘」シングルクオートによる方法がある。しかしこちらの方法では、文字列中の展開は出来ないので要注意である。あくまでも、単一。たとえば、変数だけ、とか文字列だけ、などの場合にのみ対応できる。念のため確認しておこう。
1 2 3 |
<?php $str = "天国"; echo '此処から先は、地獄か $str だ。選ぶのはあなた次第。'; |
先ほどの例とほぼ同じだが、最終的に出力するecho文を「’」シングルクオートによる記法に変更した。
結果はこのようになる。
$strがそのまま表示されてしまった。
つまり「’」シングルクオートによる記法では、変数展開がされなかったことが分かる。よって、文字列中に変数展開したい場合は、「“」ダブルクオートによる方法で行う。
ダブルクオートを使う場合の注意
ダブルクオートによる変数展開をする場合に気をつけたいのが下記のようなケースである。
1 2 3 |
<?php $str = "abc"; echo "$strdef"; |
この場合、出力結果は何もない「白紙」になる。
白紙とは、PHPでいうところのプログラムのエラーを意味する。つまり、プログラムとして何か不備があり、PHPとしては不完全な結果を表している。
今回のケースに限らず、PHPがプログラムをうまく処理出来なかった場合は、このように「白紙」画面となるため、PHPプログラマの間ではあるあるな話であり、最も恐れている事象でもある。
白紙の原因を探ってみよう
恐れてばかりでもいられないので、原因を考えてみよう。なぜ、今回はこのような結果になったのだろうか?
下記の部分をよく見てみてほしい。
1 |
echo "$strdef"; |
プログラムを作成した本人ならば分かるかもしれないが、この行を見る限り、プログラムを解釈する側には、どこまでが変数で、どこからが通常の文字列が分からないのだ。$s という変数かもしれないし、$strder という変数かもしれない、そんな風に読み取れはしないだろうか?人間にも判別が付かないのだから、PHPではなおさらだ。
ここで行うべきは、どこまでが変数でどこからが通常の文字列かを示すことだ。こういう場合は、きちんと解釈してもらえるようにわかりやすくする方法がある。
それが「{ }」 で変数を囲むという方法になる。下記を見て欲しい。
1 2 3 |
<?php $str = "abc"; echo "{$str}def"; |
これでようやく出力が確認できる。
このようにすることで、変数を明確に示すことが出来る。今回のようなケースに限らず、{}による記法は、日常的に心がけるのがよいだろう。
まとめ
PHPプログラムで文字列を表示する際に、定型文の中にある特定の部分を変数にした上で実行結果に応じてその内容を変えるというような事はよくあるだろう。
今回はその方法と表記の際の注意点を解説した。
変数を1つだけでなく2つ、3つと増やしたり、文字列を複数行にしてみたり、など応用してみよう。