2011-12-21 42 views
1

爲什麼我通過$key++$key+1獲得不同的輸出?foreach中的增量索引

如何使用foreach來引用循環中的下一個元素?

foreach($diff as $key=>$val) { 

if(in_array($diff[$key],$common) && in_array($diff[$key+1],$common)) {} 

if(in_array($diff[$key],$common) && in_array($diff[$key++],$common)) {} 

} 
+1

看看http://stackoverflow.com/questions/6400518/pre-incrementation-vs-post-incrementation – jprofitt 2011-12-21 17:08:53

回答

2

$x++返回舊值$x(增量前)。例如,$x=3; print $x++;將打印「3」。 它也修改$x,所以它不是最好的選擇,除非這是你的意圖。 (在這裏,遞增將是非常無用的,特別是因爲修改後的鍵永遠不會看到循環的外部。)

++$x將返回新值$x。然而,與$x++類似,只是獲取下一個數字而語義錯誤,因爲它修改了$x

只要堅持$x + 1

4
  • $key + 1回報$key + 1並且不修改$key(見documentation)。

  • $key++返回$key並改變$key$key + 1(見documentation)。

您應該使用前者,因爲沒有理由修改$key

0
$key+1 

對於那個實例,總是隻爲$key加1。它不會在所有

$key++ 

修改$key遞增的$key值,並在下一循環開始

0

$key++遞增1.的$key

$key+1加1,保留得值值爲$key,但不會更改它。

0

$key + 1將添加到密鑰但實際增量$key

$key++將取$key的值,並在返回後,然後增加$ key(使用後)。