我在哪里可以读到用“?”完成的条件。和“:”(冒号)? [复制]

Posted

技术标签:

【中文标题】我在哪里可以读到用“?”完成的条件。和“:”(冒号)? [复制]【英文标题】:Where can I read about conditionals done with "?" and ":" (colon)? [duplicate] 【发布时间】:2011-05-02 14:31:58 【问题描述】:

可能重复: Reference - What does this symbol mean in php?

我一直在用 if/else 或一年左右的时间来做条件句。查看一些新代码,我看到一个似乎使用 ?: 而不是 if 和 else 的条件。我想了解更多关于这方面的信息,但我不确定用谷歌搜索什么来解释它是如何工作的。我该怎么做?

【问题讨论】:

【参考方案1】:

这是Ternary Operator。

基本用法类似于

$foo = (if this expressions returns true) ? (assign this value to $foo) : (otherwise, assign this value to $foo)

虽然它不仅可以用于分配,但看起来下面还会出现其他示例。

我认为你在许多现代、OO 风格的 PHP 中看到这一点的原因是,如果没有静态类型,你最终需要对任何特定变量中的类型感到偏执,并且单行三进制比 7 更简洁行 if/else 条件。

另外,为了尊重 cmets 和命名的真实性,请阅读有关计算机科学中 the ternary operators 的所有信息。

【讨论】:

它是 a 三元运算符,而不是 三元运算符。 @Gumbo - 我也这么想。不幸的是,PHP 文档是倒退的。它说条件运算符之一是三元运算符。我不喜欢 PHP 的另一个原因...:-P 在 PHP 的上下文中,它是三元运算符,如手册页所述。接受他们。 @Justin Niessner:我知道它通常被称为“三元运算符”,因为它是我所知道的 PHP 中唯一的三元运算符。但是还有哪些条件运算符只能被称为其中之一? @Gumbo - 我不知道。就像我说的,我认为他们的文档也是倒退的(因此我的回答)。【参考方案2】:

那就是条件运算符。这几乎是一行 if/then/else 语句:

if(someCondition)
    $x = doSomething();

else
    $x = doSomethingElse();

变成:

$x = someCondition ? doSomething() : doSomethingElse();

【讨论】:

条件运算符。不是不止一个吗?【参考方案3】:

它是:

条件? do_if_true : do_if_false

因此,例如在下面,do->something() 将被运行。

$true = 1;
$false = 0

$true ? $do->something() : $do->nothing();

但在下面的例子中,do->nothing() 将被运行。

$false ? $do->something() : $do->nothing();

【讨论】:

【参考方案4】:

这是 PHP 中的 三元运算符。是if/else的简写,格式为:

condition ? true expression : false expression;

【讨论】:

它是 a 三元运算符,而不是 三元运算符。 是的。 三元运算符 只是意味着有三个操作数,就像二进制有两个操作数(例如a+ba&ba/b 等)而一元只有一个操作数(例如@987654325 @、~a@a 等)。但是由于 PHP 只有一个三元运算符,所以通常被称为三元运算。 @Gumbo。感谢您的深刻见解。我不确定你是不是认真的。作为这个社区的版主,我没想到你会嫉妒一个积极的参与者这样的事情。这周我看到了很多。我想这是可以理解的,因为语法就是我们的生命。不过,我希望这不会成为这个社区的趋势。 我只是喜欢使用适当的术语。但在这种情况下可能有点迂腐。

以上是关于我在哪里可以读到用“?”完成的条件。和“:”(冒号)? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

pycharm 冒号和等号的颜色在哪里设置

我在哪里可以了解语义分析?

我可以将进程链接到 bash 中的文件吗?

如何使用相同的Python代码块处理异常和特定条件

什么是问号“?”和冒号“:”运算符用于? [复制]

在哪里可以找到版本控制分支命名指南?