ホームページ > バックエンド開発 > PHPチュートリアル > PHPの中括弧の一般的なルールの詳細な説明

PHPの中括弧の一般的なルールの詳細な説明

WBOY
リリース: 2016-07-25 09:04:15
オリジナル
1983 人が閲覧しました
  1. $a = 'flower';
  2. echo "彼女は $as を受け取りました";
  3. // 無効; 文字 s は要素を形成する有効な変数名とみなされますが、ここでの変数は $a です
  4. echo "彼女は ${a} を受け取りました"; // 有効です
  5. echo "彼女は ${a} を受け取りました" // 有効な使用法です
コードをコピーします
; 「彼女はいくつかの ${a} を受け取りました」; 「いくつかの花に」、コンテキスト内の「花」という単語は複数形である必要があります (つまり、後ろに S を追加する必要があります)。ただし、変数が定義されていない場合は、いずれにせよ、最初のエコー状況が発生します。明らかに、出力を $as ではなく $a にしたいのです。では、通常、この出力をどのように処理するのでしょうか?

  1. echo "彼女は $a を受け取りました"."s";
  2. echo "彼女は ".$a." を受け取りました";
  3. // これら 2 つの慣習的な書き方には中括弧を含めないでください。簡潔で明確ですか?
コードをコピー
注: { が $ の前にあるか後にあるかに関係なく、中括弧はすぐに隣接している場合にのみ区切り記号とみなされます。間にスペースを入れないでください。入れないと通常の中括弧として扱われます。

  1. echo "彼女はいくつかの { $a} を受け取りました";
  2. // 出力結果は次のとおりです: 彼女はいくつかの { Flower} を受け取りました
コードをコピー
2、

複雑な構文ルール (使用中括弧は PHP4+ で使用される式などを区切ります):

  1. echo "有効な書き込み: {$arr[4][3]}";
  2. // 有効; 多次元配列を定義します
  3. echo "有効な書き込み: {$arr['foo'][3] }";
  4. // 有効; 文字列で多次元配列を使用する場合は、必ず括弧で囲んでください
  5. echo "有効な書き込み: {$this->width}00";
  6. // 有効; if If定義されていない場合は、 $this->width00
  7. echo "効果的な書き方: {$this->value[3]->name}";
  8. // この例は定義チェーンを示しています。 Call
  9. echo "有効な書き込みメソッド: $name: {${$name}}";
  10. // 有効; この例で示されている効果は、実際には変数 variable
  11. echo "有効な書き込みメソッド: {${getName() }}";
  12. // 有効; この例は、関数の戻り値を変数名として使用する方法を示しています
  13. echo "Validdelivery: {${$this->getName()}}";
  14. // この例は、注 1: echo "次のように記述するのは有効ですか: {getName()}"; 出力結果は次のようになります: '次のように記述するのは有効です:
  15. {getName()} '。 $が入っていないため、中括弧は区切り文字として使用されません
  16. 注2: echo "このように書くのは有効ですか: {$arr[foo][3]}"; この質問に答える前に、次のことを実行しましょう。まずは実験 :
  17. error_reporting(E_ALL);
  18. $arr = array('a', 'b', 'c', 'd'=>'e');
  19. echo "これは $arr[d]" ;
  20. / / このように書いても問題ないことが分かりましたので、このように書いたらどうでしょうか?
  21. echo $arr[d];
  22. は次のエラーを生成します:
  23. 注意: 未定義の定数 d の使用 - 'd' と仮定します
  24. 注: 未定義の定数 d の使用 - 'd' と仮定します
  25. それでは、次のようにコードを変更してください
  26. error_reporting(E_ALL);
  27. $arr = array('a', 'b', 'c', 'd'=>'e');
  28. define('f', 'd ');
  29. echo $arr [f];
コードをコピー
今回は問題ありません。文字列中の配列のインデックスがシングルクォーテーションで囲まれていなければ問題ないことがわかりますが、この書き方が文字列中にない場合はエラーが報告され、{$arr[foo] の場合は][3]} 文字列内の解析は非文字列解析に基づいています。したがって、インデックスに一重引用符を追加せずに、文字列内の配列を区切るために中括弧のみを追加するのは誤りです。プログラムは一重引用符なしでインデックスを定数として解析するため、エラーが発生します。正しい書き方は次のようになります。 echo "有効な書き込み: {$arr['foo'][3]}"; 特別な注意事項: echo "This is $arr[d]"; この書き込みメソッドはプログラムによって解析できますが、配列が 1 次元配列の場合に限定されます。厳密な書き方は次のようにする必要があります: echo "This is {$arr['d']}"; 以前、私の生徒がこの点について私と議論しました。以前の書き方でも結果が得られるのに、なぜ使用しなければならないのですか。後者の書き方はどうでしょうか?それでは、前のコードを引き続き変更しましょう

    error_reporting(E_ALL);
  1. $arr = array('a', 'b', 'c',
  2. 'd'=>array('e'=>'f')
  3. ) ;
  4. echo "これは $arr[d][e] です";
コードをコピー

これはまだ正しく解析できますか?中括弧の追加は必ず必要だということだけをお伝えしたいと思います。

注3:

  1. error_reporting(E_ALL);
  2. $arr = array('a', 'b', 'c', 'd');
  3. echo "これは {$arr[2]} です
  4. ";
  5. echo "This is {$arr['2']}
  6. ";
コードをコピー

上記のコードを実行すると、結果は同じですが、これはなぜでしょうか? PHP は型付けが弱い言語であるためです。

  1. ----SQL ステートメント
  2. //例 1:
  3. $SQL1 = "select * from table where id={$_GET['id']}";
  4. //例 2:
  5. $SQL2 = "select * from table where id={$this->id}";
コードをコピー


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート