【问题标题】:What do "?" and ":" mean in this PHP line of code? [duplicate]做什么 ”?”和“:”在这行 PHP 代码中是什么意思? [复制]
【发布时间】:2014-09-07 20:38:57
【问题描述】:

我正在尝试将此 PHP 函数转换为 Objective-C。我几乎无法阅读 PHP 来弄清楚代码的作用。碰到这条线就停了:

$nr = (strlen($nr)-3>0)?substr($nr, 0, strlen($nr)-3):"";

?: 在这里做什么?我阅读了文档以了解 strlensubstr 做了什么,但无法弄清楚它们是如何结合在一起的,以及 $nr 的新价值是什么。

【问题讨论】:

  • 代码不是Python,而是?:是三元运算符:en.wikipedia.org/wiki/%3F:
  • 我认为每个人都忽略了重点,专注于 Python 与 PHP,而不是关于三元运算符的实际问题。
  • 好的。这是 PHP,对此感到抱歉。
  • @FeifanZ 实际问题明显重复。下一次,不要用廉价的答案来寻找声誉,而是搜索副本并投票关闭。
  • 对此感到抱歉。这是我的错误,因为我将 PHP 与 Python 混淆了。我接受了一个答案,并给了亚军投票。非常感谢您的快速回答!

标签: php


【解决方案1】:

?:ternary operator。表达式x ? y : z 表示if x then y else z。在这种情况下,它会转化为类似

if strlen($nr) - 3 > 0:
    $nr = substr($nr, 0, strlen($nr) - 3)
else:
    $nr = ''

【讨论】:

  • 在某些语言中它是一个三元运算符,但在 python 中它只是无效的语法。
  • 是的......对此感到抱歉......这是PHP。我在 PHP 方面的表现与在 Python 方面的表现差不多。编辑了标题和标签。
  • 您的答案似乎是正确的。类似于: $var = (condition) ? if_true : if_false
  • ?: 是三元运算符。如果条件为真,$var 将被赋值为 if_true;否则将被赋值为 if_false。我在另一个线程上找到了这个......所以再过 2 分钟,我将能够接受答案。谢谢!
【解决方案2】:

这不是 Python,但如果你把它分解成伪 Python 语法,那就是

if strlen($nr) - 3 > 0:
     $nr = substr($nr, 0, strlen($nr)-3)
else:
     $nr = ""

在各种语言中,? 运算符是三元运算符。 Python 中不存在这种语法。以上是如何编写这样的语句,尽管您必须更正每个 if 块中的语法以及 if 条件。

【讨论】:

  • 如果这不是 Python 那它是什么?
  • 阅读您帖子中的 cmets ;)
  • 你说得对...似乎是 PHP,我编辑了标签和标题。我的 PHP 和我的 Python 一样好:D 问题仍然存在!
【解决方案3】:

它会翻译成

if (strlen($nr)-3>0) then value of $nr is substr($nr, 0, strlen($nr)-3) 
else it is "" 

而且我不认为代码是在 python 中,它看起来像 php 或 perl。

【讨论】:

    猜你喜欢
    • 2011-07-12
    • 1970-01-01
    • 2013-10-06
    • 2019-10-14
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多