2014-02-27 80 views
1

請參閱下面的數組。我想要做的是將21和23以下的索引零值的總和除以零的數量。這就像得到他們的平均水平。在php中通過多維數組循環訪問

Array 
(
[21] => Array 
    (
     [0] => 3.5 
     [65] => Array 
      (
       [0] => 44.125 
      ) 

     [150] => Array 
      (
       [0] => 15.25 
      ) 

     [151] => Array 
      (
       [0] => 17.333333333333 
      ) 

    ) 

[23] => Array 
    (
     [0] => 0 
     [166] => Array 
      (
       [0] => 26 
      ) 

     [172] => Array 
      (
       [0] => 
      ) 

     [182] => Array 
      (
       [0] => 20.333333333333 
      ) 

     [183] => Array 
      (
       [0] => 24.125 
      ) 

    ) 

) 

然後提前對其進行格式化這個

Array 
(
[21] => Array 
    (
     [0] => Average for 21 
     [65] => Array 
      (
       [0] => 44.125 
      ) 

     [150] => Array 
      (
       [0] => 15.25 
      ) 

     [151] => Array 
      (
       [0] => 17.333333333333 
      ) 

    ) 

[23] => Array 
    (
     [0] => Average for 23 
     [166] => Array 
      (
       [0] => 26 
      ) 

     [172] => Array 
      (
       [0] => 
      ) 

     [182] => Array 
      (
       [0] => 20.333333333333 
      ) 

     [183] => Array 
      (
       [0] => 24.125 
      ) 

    ) 

) 

謝謝那些誰可以幫助! :)

注意:這只是數組的示例結構。 21和23歲的孩子可能有另一個孩子,也就是另一個孩子。例如:

[65] => Array 
    (
     [0] => 44.125 
     [x] => Array 
      (
       [0]=> 121.11 
     ) 
    ) 

我相信這個需要遞歸函數。

+0

使用var_export($陣列)來代替的print_r($陣列)在這裏發表陣列結構。 –

+0

你想在數組21中加入[0] => 3.5,併除以4 –

+0

@RohitAwasthi注意到。對不起,回合。這是我第一次來這裏。謝謝。 @卡特所有那些索引0下21應添加然後除以索引0的數量..任何想法? – user3360031

回答

0

試試這個,我想這是你想要的

$count1 = 0;$sum=0; 
    $count2 = 0;$sum2=0; 
    foreach ($array as $key3 => $value3) 
    { 
     if($key3 == "21") 
     { 
     foreach ($value3 as $key => $value) 
     { 
      if (strpos($key, '0') === 0) { 
      $count1++;$sum=$sum+$value; 
      } 
      if(is_array($value)) 
      { 
      foreach($value as $key2=>$value2) 
      { 
       if(strpos($key2,'0') === 0) 
       { 
       $count1++ ;$sum=$sum+$value2; 
       } 
      } 
      } 
     } 
     } 
     if($key3 == "23") 
     { 
     foreach ($value3 as $key => $value) 
     { 
      if (strpos($key, '0') === 0) { 
      $count2++;$sum2=$sum2+$value; 
      } 
      if(is_array($value)) 
      { 
      foreach($value as $key2=>$value2) 
      { 
       if(strpos($key2,'0') === 0) 
       { 
       $count2++; $sum2=$sum2+$value2; 
       } 
      } 
      } 
     } 
     } 
    } 


$array[21][0] = ($sum/$count1); 
$array[23][0] = ($sum2/$count2); 

Demo

+0

謝謝。然而數組實際上是動態的。我忘了在我的帖子中提到它。我編輯我的帖子澄清。謝謝。 – user3360031

+0

直到你的數組有多少級別? – krishna

+0

也是主陣列只有21和23? – krishna