2010-05-12 129 views

回答

12

$i如果是

  • 设置
  • 和不false
  • 和不null

由十二增量$top;否则,通过零,如果它已经不是一个,则隐式地将其转换为数字变量。

+4

另外,如果'$ i'没有设置,则会发出警告。 – Powerlord 2010-05-12 18:32:17

+0

@ R.B好点。为避免这种警告,应该使用'(isset($ i)和($ i))'来代替'$ i'。 – 2010-05-12 18:32:55

+0

当$ i变为数字变量时,它是否得到值0? 什么是关于PHP导致$ i隐式转化为数值var?为什么它隐式地改为numeric var,而不是布尔型(因为三元运算符可能会提示布尔型编码)? – Eddified 2010-05-12 19:18:10

11

如果$i的值已设置(非空/空含义条件解析为true),则将12添加到$top0否则。

它基本上是速记:

if ($i) 
{ 
    $top += 12; 
} 
else 
{ 
    $top += 0; 
} 

This is known as Ternary operator.

+3

+1链接到三元运营商。 – 2010-05-12 18:26:04

+1

+1:有趣,从来不知道这个算子。 – 2010-05-12 18:31:11

4

简写为:

if ($i) { 
    $top += 12; 
} 
+0

最清楚的答案。 – 2010-05-12 18:21:20

+0

你在那里缺少'else'。 – Sarfraz 2010-05-12 18:22:14

+1

@Sarfraz是对的:如果'$ i'在操作之前不是数值,那么'+ 0'将会进行隐式转换,所以它不是100%相同的(尽管在实践中,它可能与'$ i'不相关可能会是数字)。两种方式都很好回答。 – 2010-05-12 18:24:32

2

如果$ i是真实的(例如,不为零或空字符串) 12被添加到$ top。否则,不会向$ top添加任何内容。

这等同于由12如果$i具有真布尔值(即$i = 1$i = true等)的$top

if($i) 
    $top = top + 12; 
0

的$吗? 12:0是if语句的“简写”。在这种情况下,$ i被评估为一个表达式。如果表达式的计算结果为真,则值12将用作附加赋值表达式中的r值。如果$ i评估为false,则将0用作r值。