PHPシンタックスルール詳細解入門学習

3401 ワード

1.簡単な構文ルール(変数名をかっこで定義し、PHPのすべてのバージョンに適用する):
 
$a ='flower';
echo "She received some $as";// ; s , $a
echo "She received some ${a}s";//
echo "She received some {$a}s";// ;
私達が表現したいのは「彼女が花を受け取りました」、文脈の中のflowerは複数の形をとるべきです。明らかに私たちが出力したいのは$aであって、$asではありません。私たちは通常どうやってこの出力を処理しますか?
 
echo "She received some $a"."s";
echo "She received some ".$a."s";// ?
注意:「ドルの前に現れても後になっても、両者がくっついている時だけ、括弧は定義記号とみなされる。間にスペースを入れないでください。そうでないと普通のかっことしてecho「She received some{a}s」を処理します。出力の結果は、She received some{flower}s 2.複雑な構文規則(花括弧で表現式を定義するなど、PHP 4+):
 
echo " : {$arr[4][3]}";// ;
echo " : {$arr['foo'][3]}";// ; ,
echo " : {$this->width}00";// ; , $this->width00
echo " : {$this->value[3]->name}";// ;
echo " : $name: {${$name}}";// ;
echo " : {${getName()}}";// ;
echo " : {${$this->getName()}}";// ;
注意1:echo“このように書くと効果がありますか?{get Name()};出力結果は「{get Name}」です。中には$が含まれていないので、括弧は境界線として扱われません。この問題に答える前に、まず実験を行います。
 
error_reporting(E_ALL);
$arr = array('a','b','c','d'=>'e');
echo "This is $arr[d]";// , ?
echo $arr[d];
は「Notice:Use of undefined constant d-assumed'd」のエラーが発生しました。これは定義されていない定数dを採用しています。「d」であるべきかもしれません。このようにコードを修正すれば、
 
error_reporting(E_ALL);
$arr = array('a','b','c','d'=>'e');
define('f','d');
echo $arr[f];
は今回は問題がないことを発見します。文字列に配列されている索引に単引用符を付けないのは問題ないと考えられますが、文字列に現れないとエラーが発生します。文字列に対して「$arr[foo]」[3]」の解析は文字列以外の方法で解析されます。したがって、文字列の中では、配列に括弧を入れるだけで、インデックスに引用符を付けないという書き方は間違っています。プログラムはシングルクォーテーションマークを付けないインデックスを定数として解析するため、エラーが発生しました。正しい書き方は、echo「有効な書き方:{$arr[[foo]][[3]]]」です。特に注意したいのは、echo「This is$arr[d]」です。このような書き方はプログラムで解析できますが、これは配列が一次元配列の場合に限られます。厳密な書き方は、echo「This is{$arr['d]」;私の学生はこの点で私と論争したことがありますが、彼は「前の書き方で結果が出るのに、なぜ後ろの書き方をしなければならないのですか?」じゃ、前のコード
 
error_reporting(E_ALL);
$arr = array('a','b','c','d'=>array('e'=>'f'));
echo "This is $arr[d][e]";
を修正し続けます。これで正しい解析ができますか?私はただあなたにだけ教えたいのです。括弧を入れるのは厳格な必要です。もちろん、もしあなたが私の学生ではないなら、そんなに多くは管理できません。注意してください。3:
 
error_reporting(E_ALL);
$arr = array('a','b','c','d');
echo "This is {$arr[2]} <br />";
echo "This is {$arr['2']} <br />";
に上のコードを実行してください。結果は同じです。なぜですか?PHPは弱いタイプの言語だとしか教えられません。弱いタイプの言語はここで多く話しません。自分でGoogleに行きましょう。こんなに多く話しましたが、これらの構文ルールの優位性を最も体現する具体的な応用はどこにありますか?SQL文
 
// :
$SQL1 ="select * from table where id={$_GET['id']}";// :
$SQL2 ="select * from table where id={$this->id}";
OK、括弧を使ってここまで遊びました。