PHP 之局部變量與全局變量的交錯(一)嵌套for循環中的變量

      相信很多從c++/java/c#等過來的同學,可能會犯這樣的錯誤:

<?php
  for($i=0;$i<9;$i++)
{
    #some code
    #many many code!...
    for($i=0;$i<8;$i++)
     {
          #some my ugly code
      }
}
?>

外面一個大的for循環,寫了很多代碼以後,又要一個循環,大家想都不想又扔個i,我們在其他語言都是這麼幹的,但是在php這樣幹以後,你會發現,代碼變成死循環了!究其原因是什麼呢?

   原來for語句並不是函數,只是一種語句形式,在php裏面,兩個i都被當作了全局變量,每次運行到完裏面的循環,i都被重新賦值爲7,當然永遠都跳不出循環了。

    我的解決辦法是儘量將每次for循環的自增變量名字區分開,這樣可以極大的避免這種問題。並且儘量使用foreach.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章