三項演算の問題

WBOY
リリース: 2016-06-23 13:30:50
オリジナル
853 人が閲覧しました

$str = true?8888:true?100+100:100000000;echo '<br/>',$str;
ログイン後にコピー


ここで出力される結果が 200 なのはなぜですか?結合方向は左で、最初の三項演算子8888から真と判定され、「:」以降は実行されません。そうではありませんか?


ディスカッションへの返信(解決策)

$str = true?8888:(true?100+100:100000000); echo '<br/>',$str;
ログイン後にコピー


そうです

$c=1;$d=1;$str = true?8888:(true?$c++:$d++); echo $c,"<br/>";//1echo $d,"<br/>";//1echo '<br/>',$str;//8888
ログイン後にコピー

$str = (true?8888:true)?100+100:100000000; echo '<br/>',$str;//  200
ログイン後にコピー


これは、括弧なしでシステムが解釈される方法です。

うわー

システムはこのように分析してくれるのでしょうか?三項演算子の結合方向が左になっていませんか?

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