PHP 三元运算符

| 选择喜欢的代码风格  
<?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开发中的一些奇淫巧技(需要有点英文的阅读能力)



发表评论