PHP 5.3 中的 ?: 是什么?

发布于 2024-08-19 14:44:57 字数 671 浏览 10 评论 0原文

可能的重复: 什么是 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 中提供了几个新功能:

  1. DIR 常量
  2. ?: 运算
  3. 符 匿名函数

  1. PHP 5.3 中的 number 2 与 ?: 有何作用?

  2. 另外,匿名函数是什么意思?这不是已经存在了一段时间了吗?

Possible Duplicate:
What are the PHP operators “?” and “:” called and what do they do?

From http://twitto.org/

<?PHP
    require __DIR__.'/c.php';
    if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; }))
        throw new Exception('Error');
    $c();
?>

Twitto uses several new features available as of PHP 5.3:

  1. The DIR constant
  2. The ?: operator
  3. Anonymous functions

  1. What does number 2 do with the ?: in PHP 5.3?

  2. Also, what do they mean by anonymous functions? Wasn't that something that has existed for a while?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

野却迷人 2024-08-26 14:44:57

?: 是条件运算符的一种形式,以前仅可用作:

expr ? val_if_true : val_if_false

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

expr ? expr : val_if_false

来自手册

从 PHP 5.3 开始,可以省略条件运算符的中间部分。如果 expr1 计算结果为 TRUE,则表达式 expr1 ?: expr3 返回 expr1,并且 expr3否则。

?: is a form of the conditional operator which was previously available only as:

expr ? val_if_true : val_if_false

In 5.3 it's possible to leave out the middle part, e.g. expr ?: val_if_false which is equivalent to:

expr ? expr : val_if_false

From the manual:

Since PHP 5.3, it is possible to leave out the middle part of the conditional operator. Expression expr1 ?: expr3 returns expr1 if expr1 evaluates to TRUE, and expr3 otherwise.

叹沉浮 2024-08-26 14:44:57

?: 运算符是 条件运算符(通常称为三元运算符):

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

在以下情况下:

expr1 ?: expr2

如果 expr1true,则表达式计算为 expr1 的值,否则为 expr2

从 PHP 5.3 开始,可以省略三元运算符的中间部分。如果 expr1 计算结果为 TRUE,则表达式 expr1 ?: expr3 返回 expr1,并且 expr3否则。

The ?: operator is the conditional operator (often refered to as the ternary operator):

The expression (expr1) ? (expr2) : (expr3) evaluates to expr2 if expr1 evaluates to TRUE, and expr3 if expr1 evaluates to FALSE.

In the case of:

expr1 ?: expr2

The expression evaluates to the value of expr1 if expr1 is true and expr2 otherwise:

Since PHP 5.3, it is possible to leave out the middle part of the ternary operator. Expression expr1 ?: expr3 returns expr1 if expr1 evaluates to TRUE, and expr3 otherwise.

月依秋水 2024-08-26 14:44:57

看这里:

从 PHP 5.3 开始,可以省略三元运算符的中间部分。如果 expr1 计算结果为 TRUE,则表达式 expr1 ?: expr3 返回 expr1,否则返回 expr3。

匿名函数:不,它们在 5.3 之前不存在。 0(参见示例下面的第一个注释),至少以这种方式:

function ($arg) { /* func body */ }

唯一的方法是 create_function(),它速度较慢,相当麻烦且容易出错(因为使用字符串用于函数定义)。

Look here:

Since PHP 5.3, it is possible to leave out the middle part of the ternary operator. Expression expr1 ?: expr3 returns expr1 if expr1 evaluates to TRUE, and expr3 otherwise.

Anonymous functions: No, they didn't exist before 5.3.0 (see the first note below the examples), at least in this way:

function ($arg) { /* func body */ }

The only way was create_function(), which is slower, quite cumbersome and error prone (because of using strings for function definitions).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文