ホームページ >バックエンド開発 >PHPチュートリアル >PHP学習メモ演算子優先順位_PHPチュートリアル

PHP学習メモ演算子優先順位_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:50:29908ブラウズ

演算子の優先順位は、プログラマーが理解して習得する必要がある重要な知識点です。PHP の演算子の優先順位に関する記事を見てみましょう。

今日、Lao Wang の技術マニュアルで次の質問を見つけました:

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

出力は何ですか?

この質問は一見簡単そうに見えますが、よく考えてみると実は簡単ではありません。

ブール値と前の部分を言うと、それは優先順位の問題によるものですが、単に優先順位の問題であれば、結果は次のようになります。

コードは次のとおりですコードをコピー$a = (100 && $b) = 200
実際の結果は、確かに優先度の高い && が優先度の低い = まで与えられ、$b = 200 が最初に結合されます。

その理由は、PHP が優先度の定義に完全に準拠していないためです。これについては、PHP マニュアルでも説明されています。

注: = の優先順位は他のほとんどの演算子よりも低くなりますが、PHP では引き続き次のような式が許可されます: if (!$a = foo())。この場合、foo() の戻り値は $a に入れられます。 .

私はそのような設計について個人的に意見を表明するつもりはありませんが、C 言語では、おそらく歴史的な理由から、このような記述は文法的に間違っていると判断されます。

好奇心旺盛な学生は、その理由を知りたいかもしれません:

こんにちはラルエンス:

PHP演算子の優先順位について質問する

コードは次のとおりです

コードをコピー$t == 1 && $tt = 2

PHP演算子によると、優先順位は次のようになります

コードは次のとおりです

コードをコピー(($t == 1) && $tt) = 2

この注文は実行されますが、実際には実行されるはずです

コードは次のとおりです

コードをコピー($t == 1) && ($tt = 2)実はこれも単純で、文法が曖昧な場合にルールを選択する手段なのですが、PHPの構文解析ファイルの定義では等号とT_BOOLEAN_AND(&&)の前にルールがありません。 :

よく分かりません。

コードは次のとおりです

コードをコピー変数なしの式: // T_BOOLEAN_AND が「単項演算子」になるのと同等の暗黙のルールがあります。 | expr T_BOOLEAN_AND { zend_do_boolean_and_begin(&$1, &$2 TSRMLS_CC) }

最後に、ちなみに、PHPはT_BOOLEAN_ANDに対応しており、T_LOGICAL_AND(and)とT_LOGICAL_OR(or)も定義されており、どちらも等号よりも優先度が低いので、多くの場合に典型的なコード例になります。 PHP の入門書:

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

$result = mysql_query(*) または die(mysql_error());

同様に、 or を使用して三項演算子 (?:):

の関数を実装することもできます。
コードは次のとおりです コードをコピー

$person = $who または $person = "ラルエンス";

//以下と同等:

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

$person = empty($who)? "ラルエンス" : $who;

左||左&&左|左^左&なし== != === !==なし<=>=左<<>左+ - .左* / %そうです! ~ ++ -- (int) (float) (string) (array) (object) @そうです[なし新しい

複合方向

オペレーター
xor
そうです 印刷
そうです = += -= *= /= .= %= &= |= ^= ~= <<= >>=

http://www.bkjia.com/PHPjc/632626.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632626.html技術記事演算子の優先順位は、プログラマーが理解して習得する必要がある重要な知識点です。PHP の演算子の優先順位に関する記事を見てみましょう。 今日はLao Wangの技術マニュアルで...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。