我在哪里可以读到用“?”完成的条件。和“:”(冒号)? [复制]
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+b
、a&b
、a/b
等)而一元只有一个操作数(例如@987654325 @、~a
、@a
等)。但是由于 PHP 只有一个三元运算符,所以通常被称为三元运算。
@Gumbo。感谢您的深刻见解。我不确定你是不是认真的。作为这个社区的版主,我没想到你会嫉妒一个积极的参与者这样的事情。这周我看到了很多。我想这是可以理解的,因为语法就是我们的生命。不过,我希望这不会成为这个社区的趋势。
我只是喜欢使用适当的术语。但在这种情况下可能有点迂腐。以上是关于我在哪里可以读到用“?”完成的条件。和“:”(冒号)? [复制]的主要内容,如果未能解决你的问题,请参考以下文章