首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是?:在PHP 5.3中?

什么是?:在PHP 5.3中?
EN

Stack Overflow用户
提问于 2010-01-28 16:33:06
回答 3查看 47K关注 0票数 85

可能重复: What are the PHP operators “?” and “:” called and what do they do?

来自http://twitto.org/

代码语言:javascript
复制
<?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

  • Anonymous functions

  • ?:functions

  1. 在PHP5.3中#2用?:做了什么?
  2. 还有,匿名函数是什么意思?这不是已经存在一段时间了吗?--
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-28 16:36:40

?:是条件运算符的一种形式,以前只能使用:

代码语言:javascript
复制
expr ? val_if_true : val_if_false

在5.3中,可以省略中间部分,例如expr ?: val_if_false,它相当于:

代码语言:javascript
复制
expr ? expr : val_if_false

manual

从PHP5.3开始,可以省略条件运算符的中间部分。Expression expr1 ?: expr3如果expr1的计算结果为TRUE,则返回expr1,否则返回expr3

票数 138
EN

Stack Overflow用户

发布于 2010-01-28 16:38:19

?:运算符是conditional operator (通常称为三元运算符):

如果expr1的计算结果为TRUE,则表达式(expr1) ? (expr2) : (expr3)的计算结果为expr2;如果expr1的计算结果为FALSE,则表达式的计算结果为expr3

在以下情况下:

代码语言:javascript
复制
expr1 ?: expr2

如果expr1为true,则表达式的计算结果为expr1,否则为expr2

从PHP5.3开始,可以省略三元运算符的中间部分。Expression expr1 ?: expr3如果expr1计算结果为TRUE,则返回expr1,否则返回expr3

票数 36
EN

Stack Overflow用户

发布于 2010-01-28 16:38:23

Look here:

从PHP5.3开始,可以省略三元运算符的中间部分。Expression expr1 ?:如果expr1计算结果为TRUE,则expr3返回expr1,否则返回expr3。

匿名函数:不,它们不存在before 5.3.0 (参见示例下面的第一个注释),至少是这样的:

代码语言:javascript
复制
function ($arg) { /* func body */ }

唯一的方法是create_function(),它更慢、更麻烦、更容易出错(因为函数定义使用字符串)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2153180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档