前提・実現したいこと
エスケープについての理解を深めたいです。
以下、エクササイズ①は、PHPでfor文を用いて6歳から100歳までをoptionで選べるようにできる
ものを練習でつくってみようと思い、完成したコードです。こちらは、エラーなく出力されます。
エクササイズ①において、変数をシングルクオテーションで囲むのは('{$i}')、文字列として認識させてあげるためのエスケープだというサイトを見つけました。
それを読み、ならば文字列の連結に、ドットを使用しているけれど、もしかしたらこれは応用できるのでは?と思いました。
それで試してみたのがエクササイズ②です。
私はCを実行したのですが、シングルクオテーションも出力されてしまいました。けれど、シングルクオテーションを削除したら正常に出力されていました。
このとき、なぜエスケープをしていないのに普通にできるんだろうと思いましたが、エクササイズ①も、echo "<option value='{$i}'>{$i}</option>";のように、オプションタグの間にある変数にエスケープ処理をしていないことに気づきました。
この時点で混乱してしまって、頭を整理してみたのですが、{中括弧}を使用した時点で変数展開だから、文字列がしっかりと出力されるため、シングルクオテーションは必要ないのだという結論がでました。そうなると、なぜ"<option value='{$i}'>で、変数展開をダブルクオーテーションで囲むのかがわからなくなってしまいました。
初心者で、まだ基本的なことを勉強中です。ご回答よろしくお願いいたします。
エクササイズ①
php
1<?php 2 for($i = 6; $i<=100; $i++) 3 { 4 echo "<option value='{$i}'>{$i}</option>"; 5 } 6 ?>
###エクササイズ②
php
1<?php 2$name = 'Navy'; 3echo '変数$nameの値: '.$name; 4echo '<br>'; 5echo '-----'; 6echo '<br>'; 7 8//A 9//echo "My name is".$name; 10//B 11//echo "My name is {$name}"; 12//C 13echo "My name is '{$name}'"; 14?>
回答3件
あなたの回答
tips
プレビュー