入門学習向けのPHP構文ルールを詳しく解説

WBOY
リリース: 2016-06-13 12:04:02
オリジナル
965 人が閲覧しました

1. 単純な構文規則 (変数名を中かっこで区切ります。PHP のすべてのバージョンに適用されます):

コードをコピー コードは次のとおりです:


$a ='flower';
echo "彼女は $as を受け取りました";// 文字 s は要素を形成する有効な変数名とみなされますが、ここでの変数は$a
echo "彼女は ${a} を受け取りました";// 有効
echo "彼女は {$a} を受け取りました";// 推奨される使用法


私たちが表現したいのは、「彼女は花を受け取りました」です。コンテキスト内の「花」という単語は複数形にする必要があります (つまり、後ろに S を追加する必要があります)。しかし、変数が何らかの方法で定義されていない場合は、 、最初のエコー状況が発生します。明らかに、出力を $as ではなく $a にしたいのです。では、通常、この出力をどのように処理するのでしょうか?

コードをコピー コードは次のとおりです。


echo "彼女は $a を受け取りました"."s"; >echo " 彼女はいくつかの ".$a." を受け取りました";// これら 2 つの慣習的な書き方は、中括弧を使った書き方ほど簡潔で明確ではないはずですよね?

注: { が $ の前にあるか後にあるかに関係なく、中括弧はすぐに隣接している場合にのみ区切り記号とみなされます。それらの間にスペースを追加しないでください。そうしないと、通常の中括弧として扱われます。

echo "彼女はいくつかの { $a} s を受け取りました";// 出力結果は次のようになります: 彼女はいくつかの { Flower} s を受け取りました


2. 複雑な構文ルール (PHP4 で使用される中括弧などで区切る式):

コードをコピーします コードは次のとおりです。

echo "有効な書き込みメソッド: {$arr[4][3]}";// 有効; 多次元配列を定義します
echo "有効な書き込みメソッド: {$arr[' foo'][3]}"; // 有効; 文字列で多次元配列を使用する場合は、必ず括弧で囲んでください
echo "有効な書き込み: {$this->width}00" ; // 有効; 定義されていない場合は $this->width00
echo "有効な書き込み: {$this->value[3]->name}";// この例は有効です。連鎖呼び出しを定義する有効な記述方法
echo ": $name: {${$name}}";// 有効; この例で示される効果は実際には変数 variable
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' );
echo $arr[f];


今回は問題がないことがわかりました。文字列中の配列のインデックスがシングルクォーテーションで囲まれていなければ問題ないことがわかりますが、この書き方が文字列中にない場合はエラーが報告され、{$arr[foo] の場合は][3]} 文字列内の解析は非文字列解析に基づいています。したがって、インデックスに一重引用符を追加せずに、文字列内の配列を区切るために中括弧のみを追加するのは誤りです。プログラムは引用符で囲まれていないインデックスを定数として解釈するため、エラーが発生します。正しい書き方は次のとおりです:


echo "効果的な書き方: {$arr['foo'][3]}";

特別な注意事項: echo "これは $ arr[d ]";この書き方はプログラムで解析可能ですが、配列が1次元配列の場合に限定されます。厳密な記述方法は次のようにする必要があります: echo "This is {$arr['d']}"; 私の生徒はかつてこの点について私と議論しました:前の記述方法で結果が得られるのに、なぜそれを使用しなければならないのですか?後者の書き方はどうでしょうか?次に、前のコードの変更を続けましょう


コードをコピーします コードは次のとおりです。

error_reporting(E_ALL);

$arr = array('a','b','c','d'=>array('e'=>'f'));
echo "これは $arr[ d][e]";


これでも正しく解析できますか?中括弧の追加は必ず必要だということだけをお伝えしたいと思います。もちろん、あなたが私の生徒でない場合、私はそこまで制御できません...

注 3:

コードをコピーコードは次のとおりです:


error_reporting(E_ALL);
$arr = array('a','b','c','d'); {$ arr[2]}
";
echo "これは {$arr['2']}
";

を実行します上記のコード。結果は同じなのですが、なぜそうなるのでしょうか?私が言えるのは、PHP は弱い型付けの言語であるということだけです。弱い型付けの言語とは何かについては、ここでは詳しく説明しません。自分でGoogleで調べてみてください。ここまで述べてきましたが、これらの構文規則の利点を最もよく反映する具体的なアプリケーションはどこでしょうか? ----SQL ステートメント

コードをコピー コードは次のとおりです:

// 例 1:
$ SQL1 =" select * from table where id={$_GET['id']}";// 例 2:
$SQL2 ="select * from table where id={$this->id}";

OK、中括弧の扱いはこれで終わりです。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!