可能重复: What are the PHP operators “?” and “:” called and what do they do?
<?PHP
require __DIR__.'/c.php';
if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; }))
throw new Exception('Error');
$c();
?>
从PHP 5.3开始,Twitto使用了几个新特性:
The ?:operator
发布于 2010-01-28 16:36:40
?:
是条件运算符的一种形式,以前只能使用:
expr ? val_if_true : val_if_false
在5.3中,可以省略中间部分,例如expr ?: val_if_false
,它相当于:
expr ? expr : val_if_false
从PHP5.3开始,可以省略条件运算符的中间部分。Expression
expr1 ?: expr3
如果expr1
的计算结果为TRUE
,则返回expr1
,否则返回expr3
。
发布于 2010-01-28 16:38:19
?:
运算符是conditional operator (通常称为三元运算符):
如果
expr1
的计算结果为TRUE,则表达式(expr1) ? (expr2) : (expr3)
的计算结果为expr2
;如果expr1
的计算结果为FALSE,则表达式的计算结果为expr3
。
在以下情况下:
expr1 ?: expr2
如果expr1
为true,则表达式的计算结果为expr1
,否则为expr2
:
从PHP5.3开始,可以省略三元运算符的中间部分。Expression
expr1 ?: expr3
如果expr1
计算结果为TRUE,则返回expr1
,否则返回expr3
。
发布于 2010-01-28 16:38:23
从PHP5.3开始,可以省略三元运算符的中间部分。Expression expr1 ?:如果expr1计算结果为TRUE,则expr3返回expr1,否则返回expr3。
匿名函数:不,它们不存在before 5.3.0 (参见示例下面的第一个注释),至少是这样的:
function ($arg) { /* func body */ }
唯一的方法是create_function()
,它更慢、更麻烦、更容易出错(因为函数定义使用字符串)。
https://stackoverflow.com/questions/2153180
复制相似问题