<?php $a = 5; echo ($a == 5) ? 'yay' : 'nay';
相比之下,三元运算,是一个牺牲可读性,以减少行数的方式。
<?php //多个嵌套,牺牲了可读性 echo ($a) ? ($a == 5) ? 'yay' : 'nay' : ($b == 10) ? 'excessive' : ':(';
要使用三元运算符“返回”值,请使用正确的语法。下面的第一个例子会报错:
PHP Parse error: syntax error, unexpected T_RETURN
<?php $a = 5; echo ($a == 5) ? return true : return false; //报错 // vs $a = 5; return ($a == 5) ? 'yay' : 'nope'; // return 'yay'
在PHP的三元运算符里,其实不用显式的使用 return 来返回布尔值,下面是修正的代码:
<?php $a = 3; //如果 $a == 3 return true 或者 false return ($a == 3) ? true : false; // vs $a = 3; return $a == 3; //如果 $a == 3 return true 或者 false
对于所有操作(===,!==,!=,==等)都适用。
当使用三元运算符时,括号可以发挥其作用以提高代码可读性,并在语句块中包含联合。 不需要使用包围的示例是:
<?php $a = 3; return ($a == 3) ? "yay" : "nope"; // return yay or nope if $a == 3 // vs $a = 3; return $a == 3 ? "yay" : "nope"; // return yay or nope if $a == 3
包围还为我们提供了在语句块中创建联合的能力,其中块将作为整体进行检查。 如下面这个例子,如果两个($a == 3 and $b == 4)
都为真且 $c == 5
也为真,则返回 true
。
<?php return ($a == 3 && $b == 4) && $c == 5;
另一个例子是下面的片段,如果($a!= 3 and $b!= 4)
或者 $c == 5
,它将返回 true
。
<?php return ($a != 3 && $b != 4) || $c == 5;
从PHP 5.3开始,可以省略三元运算符的中间部分。 如果expr1的计算结果为TRUE,则表达式“expr1?:expr3”返回expr1,否则返回expr3。
扩展阅读:
有时,编码器通过声明具有不同名称的预定义变量来尝试使其代码“更清晰”。 实际上,这实际上是将所述脚本的内存消耗加倍。 对于下面的示例,让我们说一个示例文本字符串包含1MB的数据,通过复制您已将脚本执行增加到2MB的变量。
<?php $about = '这里是一段超长超大的文本字符串..'; // 2MB 内存 echo $about; // vs echo '这里是一段超长超大的文本字符串..'; // 1MB 内存
扩展阅读PHP开发中的一些奇淫巧技(需要有点英文的阅读能力):