做什么 ”?”和“:”在这个PHP代码行中意味着什么?

时间:2014-09-07 20:38:57

标签: php

我试图将这个PHP函数转换为Objective-C。我几乎不能阅读PHP来弄清楚代码的作用。遇到这条线并停了下来:

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

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

3 个答案:

答案 0 :(得分:2)

?: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 = ''

答案 1 :(得分:2)

这不是Python,但是如果要将其分解为伪造的Python语法,那么它将是

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

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

答案 2 :(得分:1)

它会转换为

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

我不认为代码在python中看起来像php或perl。