2011-06-12 87 views
1

我工作的PHP環路,我發現自己,我需要寫一個嵌套循環鑽,當我嘗試的foreach結合和循環它產生意想不到的結果 這裏是我的代碼的foreach和for循環在PHP

 foreach ($district_ward as $key => $value) { 
      $ward_ids = array_keys($district_ward[$key]); 
      echo $key; 
      for ($x = 0; $x < count($ward_ids)-1; $x++) { 
       $district_village[$key]= array_merge($value[$ward_ids[$x]], $value[$ward_ids[$x+1]]); 
      }    
     } 

這給了我這個

347 

,但是當我在for循環打印$鍵的值,即

 foreach ($district_ward as $key => $value) { 
      $ward_ids = array_keys($district_ward[$key]); 
      for ($x = 0; $x < count($ward_ids)-1; $x++) { 
    echo $key; 
       $district_village[$key]= array_merge($value[$ward_ids[$x]], $value[$ward_ids[$x+1]]); 
      } 
     } 

我得到這個

3 
+0

順便提一句,'array_keys($ district_ward [$ key])'→'array_keys($ value) ' – deceze 2011-06-12 14:19:39

+0

thanx,我endup writng,當我試圖找出什麼可能是問題,thanx再次 – 2011-06-12 14:31:42

回答

2

我只是去猜測你的第二和第三陣列是隻有一個入口長。循環的條件指定$x < count($ward_ids) - 1。如果您的陣列只有一個條目,則one - 1將使其循環0次。換句話說,你的內部循環根本不被執行。

+0

你是genious,thanx .. – 2011-06-12 14:25:59

0

你打印到html頁面嗎?你的鑰匙是3,4和7嗎?如果您回覆到html頁面,它們將顯示爲347。嘗試循環之前

echo "$key<br />\n"; 

甚至

echo "<pre>".print_r($district_ward)."</pre>"; 

看到陣列的樣子。

+0

問題是從來沒有顯示的結果,而不是價值觀t他是我在for循環.. thnx喲回覆,你很感激。 – 2011-06-12 14:34:33

0
foreach ($district_ward as $key => $value) { 
     $ward_ids = array_keys($district_ward[$key]); 
     for ($x = 0; $x < count($ward_ids); $x++) { 
      echo $key; 
      $district_village[$key]= array_merge($value[$ward_ids[$x]], $value[$ward_ids[$x+1]]); 
     } 
    } 

應該做的伎倆,這是因爲你從0開始,直到爲$ ward_ids 量比方說,你的$ ward_ids有1項,那麼你會循環0至0,所以沒有循環可言, 並且讓我們說它有102個條目,那麼你就會環1-101,從你開始的時候就剩下102個了。0