1 $if_summary = $row['IF_SUMMARY']==2?'是':'否'
PHP的三元运算符
这句话的意思就等于是
12345 if($row['IF_SUMMARY']==2){ $if_summary="是"}else{ $if_summary="否"; }
三元运算符的功能与“if...else”流程语句一致,它在一行中书写,代码非常精练、执行效率更高。
在PHP程序中恰当地使用三元运算符能够令脚本更为简洁、高效。
代码格式如下:(expr1) ? (expr2) : (expr3)
解释:如果条件“expr1”成立,则执行语句“expr2”,否则执行“expr3”。
实现同样的功能,若使用条件流程语句,就需要书写多行代码:
123456 if(expr1) { expr2} else { expr3}
可见,前面所说的三元运算符之好并非夸张。可是,多数情况下我们只在代码较为简单的时候使用三元运算符,即执行语句只为单句的时候。如:
1 $a>$b ? print "a大于b" : print "a小于b"
事实上,三元运算符可以扩展使用,当设置的条件成立或不成立,执行语句都可以不止一句,试看以下格式:
(expr1) ? (expr2).(expr3) : (expr4).(expr5)
我们非常明显地看到,多个执行语句可以使用用字符串运算符号(“.”)连接起来,各执行语句用小角括号包围起来以表明它是一个独立而完整的执行语句。这样扩展后它的功能更为逼近“if...else”流程语句。
同时三元运算符还可以嵌套使用。例如,a大于b成立时:如果a小于c,那么x=c-a否则x=a-c;否则a小于b成立时:如果b小于c,那么x=c-b否则x=b-c:
$a>$b ? $x=($a<$c ? $c-$a : $a-$c) : $x=($b<$c ? $c-$b : $b-$c)
嵌套使用的三元运算符可读性不太好,日后对代码的维护极可能存在问题,但比起“if...else”之类的流程语句,在上述情形之下,它的确太简练了,这是它的诱人之处。
对于喜欢偷懒和追求代码简洁的人来说,用三元运算符取代if流程语句应该是绝佳的选择。即使不用考虑“三元”中条件句以外的任意某一“元”,使用三元运算符仍然比if语句简练。以下语句的语法是正确的,它们以小解引号的方式忽略了第二或第三“元”:
12 $a>$b ? print "Yes" : ""$a>$b ? '': print 'No'
应该注意的是:在使用三元运算符时,建议使用print语句替代echo语句。
注意下列一串语句的理解:
1 $str = $_GET['abc'] ? 'wangjinbo' : 'wjb'
这里不能理解为:当$str等于$_GET['abc'] 时,赋值为 'wangjinbo' 否则赋值为 'wjb';因为一:判断相等应该用==;因原二:三元算符的语法是如上所示:(expr1) ? (expr2) : (expr3),显然上面的二元,三元'wangjinbo'或'wjb'不能单独构成一个有意义的表达式;
正确理解是:当$_GET['abc']为空(也就是否,PHP中 '',null,0,undifine,都等效布尔值false)时,将$str赋值为'wangjinbo',否则赋值为'wjb';
以上所述就是本文的全部内容了,希望大家能够喜欢。
$mod = isset($_GET['mod'])?trim($_GET['mod']) : 'message'如果$_GET['mod']这个变量已经初始化了.那么就去除左右空格,赋值给$mod,否则,把message赋值给$mod
$aid = isset($_GET['aid'])?intval($_GET['aid']) : intval($_POST['aid'])
如果$_GET['aid']这个变量已经初始化了.那么就转换成数字型的,赋值给$aid,否则,把$_POST['aid']转换为数字型后,赋值给$aid
第一行,将关键字和指向的页面装入一个数组,可用做url链接,portal指向portal.php第二行,用点分割指定的系统变量$_SERVER['HTTP_HOST']
第三行,是一个url链接,目标页面为forum.php。在?后面传递“变量=值”对(如:mod=group),
&用来连接这些变量和值对。
第四行,是一组嵌套的三元运算符。类似于if...else判断。
*****
表达式1?表达式2:表达式3
(1)条件表达式的执行顺序:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个表达式的值。
若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。
(2)条件表达式优先于赋值运算符,max=(a>b)?a:b则先求解条件表达式在赋给max。
(3)自右向左运算
a>b? a:c>d? c:d
应该是
a>b? a:(c>d? c:d)
******
最好不要在php中使用多个三元操作符。
使用多个时添加括号:
$a=1>0?1:(2==0?2:(3<0?3:0))
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)