2013-03-08 185 views
0

我有一個數組,我試圖遍歷它用foreach但我正在提供的foreach()在內的循環PHP多維foreach循環

參數無效。

我不知道我有什麼不對。我曾嘗試使用$key

這裏是數組:

array(3) { ["company_id"]=> string(3) "159" 
    [0]=> array(9) { 
     ["company_id"]=> string(3) "159" 
     ["employee_id"]=> string(3) "544" 
     ["pay_week1"]=> string(1) "0" } 
    [1]=> array(9) { 
     ["company_id"]=> string(3) "159" 
     ["employee_id"]=> string(3) "545" } } 

我的循環:

foreach ($this->request->data['MonthlyReturn'] as $key=>$m) // Cycle through each record 

{ 
    foreach ($key as $empl) 

    { 
     $employee = $empl['employee_id']; 
     print '<pre>'; 
     print_r ($employee); 
     exit; 
    } 
+0

您FOREACH的鍵環一個數組值。這是行不通的。 Foreach的價值($ m) – 2013-03-08 10:00:55

+0

我得到的結果與$ m – 2013-03-08 10:06:32

+0

@KeithPower:檢查我的答案我解釋了它。 – 2013-03-08 10:07:09

回答

2
  1. 在內部的foreach你循環$key將其更改爲$m

  2. 而且您的陣列的第一個值是不是一個數組即["company_id"]=> string(3) "159"是一個字符串(159),所以它會給錯誤。所以在內部foreach之前檢查數組也是if(is_array($m)){

下面是代碼:

  foreach ($this->request->data['MonthlyReturn'] as $key=>$m){ 
       if(is_array($m)){ 
        echo $m['employee_id']; 
       } 
       else{ 
        echo $m; 
       } 
     } 
+1

我喜歡你如何複製他可怕的縮進 – TFennis 2013-03-08 10:02:13

+0

我使用cakephp所以它設置[「company_id」] =>字符串(3)如果它是一個字符串,我仍然可以得到值? – 2013-03-08 10:08:26

+0

是的..檢查我的回答...'is_array'的其他條件' – 2013-03-08 10:10:43

1

改變這種

foreach ($key as $empl) // $key is array key 

foreach ($m as $empl) // $m is your array value 
+0

我得到了同樣的結果恐怕 – 2013-03-08 10:08:56

+0

@KeithPower檢查prashant的答案。 – 2013-03-08 10:13:57

0

你的陣列是不會對代碼工作。它需要一個multidementional陣列,但它是不完全 上有第一深度的字符串值

array(3) { 
     ["company_id"]=> string(3) "159" <--- problem 
     [0]=> array(9) { 
      ["company_id"]=> string(3) "159" 
      ["employee_id"]=> string(3) "544" 
      ["pay_week1"]=> string(1) "0" 
     } 
     [1]=> array(9) { 
      ["company_id"]=> string(3) "159" 
      ["employee_id"]=> string(3) "545" 
     } 
    } 

它試圖通過一個字符串值,這是產生誤差