2014-02-27 4 views
1

아래 배열을 참조하십시오. 21과 23에서 인덱스 0의 값의 합계를 0의 수로 나눈 값을 얻고 싶습니다. 평균을 얻는 것과 같습니다.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 ($ 배열)를 원하는 것입니다 생각합니다. –

+0

배열 21에 [0] = 3.5를 더하고 4로 나눕니다. –

+0

@RohitAwasthi 언급. 미안해. 이번이 처음입니다. 감사. @ karth 21보다 아래의 인덱스가 0 인 모든 인덱스를 0으로 나눈 값을 더해야합니다. 어떤 생각입니까? – user3360031

답변

0

이 시도, 나는 이것이 당신이 여기 배열 구조를 게시하는 대신 인 print_r ($ 배열)의

$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

관련 문제