通过php中的多维数组循环

时间:2014-02-27 11:01:21

标签: php arrays

请参考下面的数组。我想要做的是得到索引零的值在21和23之下的总和除以零的数量。这就像得到他们的平均值。

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
          )
   )

我认为这个需要一个递归函数。

1 个答案:

答案 0 :(得分: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