2010-05-12 237 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值。