什么是?在PHP 5.3中?
可能重复: 什么是PHP运算符“?”和“:”调用,它们是做什么的?
从http://twitto.org/
<?PHP require __DIR__.'/c.php'; if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; })) throw new Exception('Error'); $c(); ?>
Twitto使用PHP 5.3以来的一些新function:
- DIR常数
- ?:运算符
- 匿名function
-
在PHP5.3中,2号是做什么的?
-
另外,匿名函数是什么意思? 那不是有一段时间了?
?:
是以前仅以如下forms提供的条件运算符的一种forms:
expr ? val_if_true : val_if_false
在5.3中,可以省略中间部分,例如expr ?: val_if_false
,相当于:
expr ? expr : val_if_false
从手册 :
从PHP 5.3开始,可以省略条件运算符的中间部分。 expression式
expr1 ?: expr3
expr1
如果expr1
计算结果为TRUE
,则expr1 ?: expr3
返回expr1
,否则返回expr3
。
?:
运算符是条件运算符 (通常被称为三元运算符):
expression式
(expr1) ? (expr2) : (expr3)
(expr1) ? (expr2) : (expr3)
如果expr1
值为TRUE ,(expr1) ? (expr2) : (expr3)
值为expr2
如果expr1
值为FALSE ,则expr3
。
如果是:
expr1 ?: expr2
如果expr1
为true ,则expression式求值为expr1
,否则为expr2
:
从PHP 5.3开始,可以省略三元运算符的中间部分。 expression式
expr1 ?: expr3
expr1
如果expr1
计算结果为TRUE ,则expr1 ?: expr3
返回expr1
,否则返回expr3
。
看这里:
从PHP 5.3开始,可以省略三元运算符的中间部分。 expression式expr1?:如果expr1的计算结果为TRUE,则expr3返回expr1,否则返回expr3。
匿名函数:不,它们在5.3.0之前不存在(参见下面的例子中的第一个注释),至less是这样的:
function ($arg) { /* func body */ }
唯一的办法是create_function()
,它比较慢,相当麻烦和容易出错(因为函数定义使用string)。