1. 単純な構文ルール (変数名を中括弧で区切ります。PHP のすべてのバージョンに適用されます):
コードをコピーします。 コードは次のとおりです。
$a ='flower'; selected some $as" ;// 無効; 文字 s は有効な変数名コンポーネント要素とみなされますが、ここでの変数は $a です
echo "彼女は ${a}s を受け取りました";// 有効な
echo "彼女はいくつかの {$a} s を受け取りました";// 有効; 推奨される使用法
私たちが表現したいのは「彼女はいくつかの花を受け取りました」です。文脈の中の花は複数形である必要があります (つまり、S はの後に追加されます)、ただし、変数が何らかの方法で定義されていない場合、最初のエコー状況が発生します。明らかに、出力を $as ではなく $a にしたいのです。では、通常、この出力をどのように処理するのでしょうか?
コードをコピーします
コードは次のとおりです: echo "彼女はいくつかの $a"."s";
echo "彼女はいくつかの ".$a."s";// これら 2 つ習慣的な文章は、中括弧なしで簡潔かつ明確である必要があります。
注: { が $ の前にあるか後にあるかに関係なく、中括弧は 2 つがすぐに隣接している場合にのみ区切り記号とみなされます。間にスペースを追加しないでください。そうしないと、通常の中括弧として扱われます
echo "彼女はいくつかの { $a}s を受け取りました";// 出力結果は次のようになります: 彼女はいくつかの {flower} を受け取りました
2. 複雑構文規則 (PHP4+ で使用される中括弧などで式を区切る):
コードをコピー
コードは次のとおりです: echo "Effective writing: {$arr[4][3]}" ; // 有効; 多次元配列を定義します
echo "有効な書き込み: {$arr['foo'][3]}" // 有効; 文字列内で多次元配列を使用する場合は、必ず で囲んでください。括弧 起きてください
echo "有効な書き込み方法: {$this->width}00";// 有効; 定義されていない場合は $this->width00 になります
echo "有効な書き込み方法: {$this-> ;value[3]->name}";// 有効; この例は、連鎖呼び出しの定義を示します
echo "valid writing: $name: {${$name}}";// 有効; この例は、効果は実際には変数です。
echo "有効な書き込み: {${getName()}}" // この例は、関数の戻り値を変数名として使用する方法を示しています。
echo "有効な発行: {$ {$this->getName()}}";// 有効; この例は、関数の戻り値を変数名として使用する方法を示しています
注 1: echo "次のように記述することは有効ですか: {getName( )}" ;出力結果は次のようになります。「次のように記述するのは有効ですか:
{getName()}」。 $が入っていないため、中括弧は区切り文字として使用されません
注2: echo "このように書くのは有効ですか: {$arr[foo][3]}"; この質問に答える前に、次のことを実行しましょう。まず実験してください:
コードをコピー
コードは次のとおりです: error_reporting(E_ALL);
$arr = array('a','b','c','d'=> 'e');
echo "This is $arr[d]";// このように書いても問題ないことが分かったので、次のように書いたらどうでしょうか?
echo $arr[d];
は次のエラーを生成しました:
注意: 未定義の定数 d の使用 - 'd' と仮定します
注: 未定義の定数 d の使用 - 'd' と仮定します
次のようにコードを変更すると以下の通りです
コードをコピーします
コードは次のとおりです: error_reporting(E_ALL);
$arr = array('a','b','c','d'=> ;'e ');
define('f','d');
今回は問題がないことがわかりました。文字列中の配列のインデックスがシングルクォーテーションで囲まれていなければ問題ないことがわかりますが、この書き方が文字列中にない場合はエラーが報告され、{$arr[foo] の場合は][3]} 文字列内の解析は非文字列解析に基づいています。したがって、インデックスに一重引用符を追加せずに、文字列内の配列を区切るために中括弧のみを追加するのは誤りです。プログラムは引用符で囲まれていないインデックスを定数として解釈するため、エラーが発生します。正しい書き方は次のとおりです:
echo "効果的な書き方: {$arr['foo'][3]}";
特別な注意事項: echo "This is $arr[d]";書き方はプログラムで解析できますが、配列が1次元配列の場合に限ります。厳密な記述方法は次のようにする必要があります: echo "This is {$arr['d']}"; 私の生徒はかつてこの点について私と議論しました:前の記述方法で結果が得られるのに、なぜそれを使用しなければならないのですか?後者の書き方はどうでしょうか?それでは、前のコードを引き続き変更しましょう
コードをコピーします
コードは次のとおりです:
error_reporting(E_ALL);
$arr = array('a','b','c','d'=>array('e'=>'f')); $arr[d][e]";
これでも正しく解析できますか?中括弧の追加は必ず必要だということだけをお伝えしたいと思います。もちろん、あなたが私の生徒でない場合、私はそこまで制御することはできません...
注 3:
コードをコピーします コードは次のとおりです:
error_reporting(E_ALL); $arr = array( 'a','b','c','d');
echo "これは {$arr[2]}
"; ['2'] }
";
上記のコードを実行します。結果は同じなのですが、なぜそうなるのでしょうか?私が言えるのは、PHP は弱い型付けの言語であるということだけです。弱い型付けの言語とは何かについては、ここでは詳しく説明しません。自分でGoogleで調べてみてください。ここまで述べてきましたが、これらの構文規則の利点を最もよく反映する具体的なアプリケーションはどこでしょうか? ----SQL ステートメント
コードをコピー
コードは次のとおりです: // 例 1:
$SQL1 ="select * from table where id={$_GET['id']}" ;// 例 2: $SQL2 ="select * from table where id={$this->id}";
OK、中括弧はこれで終わりです。
http://www.bkjia.com/PHPjc/324598.html
www.bkjia.comtruehttp://www.bkjia.com/PHPjc/324598.html技術記事 1. 単純な構文規則 (変数名を中括弧で区切ります。PHP のすべてのバージョンに適用されます): 次のようにコードをコピーします。 $a ='flower'; echo "She selected some $as";// 文字 s は無効です。 ...として扱われる