※このサンプルの解説は、「CGI(Perl)の解説」をすべて読み終えてる方を前提としています。
後になるほど省略されている場合がありますのでできるだけ順番に読んでください。
また、実行に際しては、サーバーでPHPが利用できる事を前提に解説しています。
■ 変数の結合と分割
今回は「変数の結合と分割」ですが、特に命令があるわけではありません。
「変数の結合」は、変数の内容を結合する上での便利な方法を解説します。
「変数の分割」は、変数を利用する上でよくミスを起こしそうな点を解説します。
- 【 解 説 】
-
まず、2つの変数「$str1」と「$str2」にそれぞれ次のような文字がセットされていた場合。
$str1 = "aaa"; $str2 = "ccc";この2つの文字を結合して「$str0」にセットする場合、通常次のように記述します。
$str0 = $str1.$str2;さらにこれらの文字列を半角空白で区切って記述するひとつの方法は次のようなものです。
$str0 = $str1." ".$str2;この「.(ピリオド、ドット)」で結合していくというのがどうも私は好きになれなくて..
というのもいろいろな結合をしていくと複雑になってきますし、見落としたりします。
また、「"(ダブルクォーテーション)」を入れ間違えたりしてしまいます。
例えば次のような例を見てください。
$str0 = $str1." ".$str2." ".$str1." ".$str2." ".$str1." ".$str2;このような場合、私は次のようにして変数と文字列を結合します。
$str0 = "$str1 $str2 $str1 $str2 $str1 $str2";どうです? 結合部分の「"(ダブルクォーテーション)」や「.(ピリオド、ドット)」がなくなった分見やすく、シンプルになったと思いませんか?
これはPHPの持つ変数展開という手法をうまく使った例です。さて、この方法を取ったときひとつの問題が発生します。
それは、次のような場合です。『ふたつの変数の間に「bbb」という文字を入れて結合してみてください。』
たぶん、次のように記述しますよね。
$str0 = "$str1bbb$str2";実はこのように記述した結果「$str0」は「ccc」だけとなります。
この時の問題は、「$str1bbb」です。
このままでは変数「$str1bbb」と認識され、「$str1」とはならないのです。こんな時は、次のように変数を「{}」で区切ると正しい結果が表示されます。
$str0 = "${str1}bbb$str2";また、次のように部分的に区切る方法もあります。
$str0 = "$str1"."bbb$str2";
上記の命令を確認するため次のようなサンプルを作ってみました。
- 【記述サンプル】
- <?php print <<< END_DOC <HTML> <HEAD> <title>変数の結合と分割</title> </HEAD> <BODY> END_DOC; $str1 = "aaa"; $str2 = "ccc"; $str0 = $str1.$str2; print $str0."<br>\n"; $str1 = "aaa"; $str2 = "ccc"; $str0 = $str1." ".$str2; print $str0."<br>\n"; $str1 = "aaa"; $str2 = "ccc"; $str0 = $str1." ".$str2." ".$str1." ".$str2." ".$str1." ".$str2; print $str0."<br>\n"; $str1 = "aaa"; $str2 = "ccc"; $str0 = "$str1 $str2 $str1 $str2 $str1 $str2"; print $str0."<br>\n"; $str1 = "aaa"; $str2 = "ccc"; $str0 = "$str1bbb$str2"; print $str0."<br>\n"; $str1 = "aaa"; $str2 = "ccc"; $str0 = "${str1}bbb$str2"; print $str0."<br>\n"; $str1 = "aaa"; $str2 = "ccc"; $str0 = "$str1"."bbb$str2"; print $str0."<br>\n"; print <<< END_DOC </BODY> </HTML>END_DOC;