Jas*_*vis 83 php ternary-operator language-construct conditional-operator php-5.3
<?PHP
require __DIR__.'/c.php';
if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; }))
throw new Exception('Error');
$c();
?>
Run Code Online (Sandbox Code Playgroud)
Twitto使用从PHP 5.3开始提供的几个新功能:
在PHP 5.3 中,数字2对?:做什么?
另外,匿名函数是什么意思?那不是已经存在了一段时间的东西吗?
Ben*_*mes 135
?:
是条件运算符的一种形式,以前只能用作:
expr ? val_if_true : val_if_false
Run Code Online (Sandbox Code Playgroud)
在5.3中,可以省略中间部分,例如expr ?: val_if_false
,这相当于:
expr ? expr : val_if_false
Run Code Online (Sandbox Code Playgroud)
从手册:
从PHP 5.3开始,可以省略条件运算符的中间部分.如果求值,则
expr1 ?: expr3
返回表达式,否则返回.expr1
expr1
TRUE
expr3
Gum*_*mbo 35
该?:
操作员是有条件的操作者(通常refered为三元运算符):
表达式
(expr1) ? (expr2) : (expr3)
求值为expr2
ifexpr1
计算为TRUE,expr3
如果expr1
求值为FALSE.
如果是:
expr1 ?: expr2
Run Code Online (Sandbox Code Playgroud)
表达式计算expr1
if的expr1
值为true,expr2
否则:
从PHP 5.3开始,可以省略三元运算符的中间部分.如果计算结果为TRUE,则表达式
expr1 ?: expr3
返回,否则返回.expr1
expr1
expr3
从PHP 5.3开始,可以省略三元运算符的中间部分。如果expr1的计算结果为TRUE,则表达式expr1?:expr3返回expr1,否则返回expr3。
匿名函数:不,它们在5.3.0之前不存在(请参见示例下方的第一条注释),至少以这种方式:
function ($arg) { /* func body */ }
Run Code Online (Sandbox Code Playgroud)
唯一的方法是create_function()
,它比较慢,相当麻烦且容易出错(因为使用字符串定义函数)。
归档时间: |
|
查看次数: |
44519 次 |
最近记录: |