PHP三元运算符的结合性介绍
作者:bea
先看一个三元运算式子: 代码如下: <?php $a=1;$b=2;$c=3;$d=4; echo $a<$b?'xx':$a<$c?'yy':$a<$d?'zz':'oo'; ?> 一般按照其它语言(比如C或Java)的规则, 以上代码的运算逻辑是: 代码如下: $a<$b => true => 'xx' ==> 结束 那么最后得到的结果就是'xx', 而再往后的运算都会被无视. 然而令人吃惊的
先看一个三元运算式子:
代码如下:
<?php
$a=1;$b=2;$c=3;$d=4;
echo $a<$b?'xx':$a<$c?'yy':$a<$d?'zz':'oo';
?>
一般按照其它语言(比如C或Java)的规则, 以上代码的运算逻辑是:
代码如下:
$a<$b => true => 'xx' ==> 结束
那么最后得到的结果就是'xx', 而再往后的运算都会被无视.
然而令人吃惊的是, php运算以上代码最后得到的结果却是'zz'...我擦, 什么情况, 这不坑爹么...
老规矩, 只好求教谷歌酱, 结果被告知php的三元运算竟然是向左结合的...于是豁然开窍.
我给上面的代码加上两个括号:
代码如下:
<?php
$a=1;$b=2;$c=3;$d=4;
echo (($a<$b?'xx':$a<$c)?'yy':$a<$d)?'zz':'oo';
?>
一目了然了吧, 这才是php的运算逻辑:
代码如下:
$a<$b => true => 'xx' => true => 'yy' => true => 'zz' => 结束
这其中涉及到两个类型转化的过程, 即 'xx' => true 和 'xx' => true.
不知这样的过程是否是蛋疼, 确实是让人很难理解...
最后再次回到上面的代码, 将其变为像C一样的向右结合吧:
代码如下:
<?php
$a=1;$b=2;$c=3;$d=4;
echo $a<$b?'xx':($a<$c?'yy':($a<$d?'zz':'oo'));
// 括号换下位置就行了, php里括号省不得
?>
有用 | 无用
代码如下:
<?php
$a=1;$b=2;$c=3;$d=4;
echo $a<$b?'xx':$a<$c?'yy':$a<$d?'zz':'oo';
?>
一般按照其它语言(比如C或Java)的规则, 以上代码的运算逻辑是:
代码如下:
$a<$b => true => 'xx' ==> 结束
那么最后得到的结果就是'xx', 而再往后的运算都会被无视.
然而令人吃惊的是, php运算以上代码最后得到的结果却是'zz'...我擦, 什么情况, 这不坑爹么...
老规矩, 只好求教谷歌酱, 结果被告知php的三元运算竟然是向左结合的...于是豁然开窍.
我给上面的代码加上两个括号:
代码如下:
<?php
$a=1;$b=2;$c=3;$d=4;
echo (($a<$b?'xx':$a<$c)?'yy':$a<$d)?'zz':'oo';
?>
一目了然了吧, 这才是php的运算逻辑:
代码如下:
$a<$b => true => 'xx' => true => 'yy' => true => 'zz' => 结束
这其中涉及到两个类型转化的过程, 即 'xx' => true 和 'xx' => true.
不知这样的过程是否是蛋疼, 确实是让人很难理解...
最后再次回到上面的代码, 将其变为像C一样的向右结合吧:
代码如下:
<?php
$a=1;$b=2;$c=3;$d=4;
echo $a<$b?'xx':($a<$c?'yy':($a<$d?'zz':'oo'));
// 括号换下位置就行了, php里括号省不得
?>
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- 114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
- PHP警告Cannot use a scalar value as an array的解决方法
- Trying to clone an uncloneable object of class Imagic的解决方法
- win2003服务器使用WPS的COM组件的一些问题解决方法
- php通过COM类调用组件的实现代码
- 关于IIS php调用com组件的权限问题
- Uncaught exception com_exception with message Failed to create COM object
- 比file_get_contents稳定的curl_get_contents分享
- 学习使用curl采集curl使用方法
- PHP 日,周,月点击排行统计
- php删除页面记录 同时刷新页面 删除条件用GET方式获得
- PHP求小于1000的所有水仙花数的代码
- php 带逗号千位符数字的处理方法
- php mysql 判断update之后是否更新了的方法
- 用PHP实现小写金额转换大写金额的代码(精确到分)
- 解决文件名解压后乱码的问题 将文件名进行转码的代码
- php 字符串替换的方法
- PHP中strtotime函数使用方法分享
- 比较详细PHP生成静态页面教程