2013-10-10 35 views
0
<?php 
    $r1=array("n"=>3,"ni"=>2,["nis"=>3,[["nish"=>4],[["nishi"=>"n"],[["nishi"=>true]]]]]); 
    echo "<pre>"; 
    //print_r($r1); 
    echo "</pre>"; 
    $sum=0; 

    for ($i=0;$i<count($r1);$i++) { 
    $curr=$r1[$i]; 
    if (is_array($curr)) { 
       $sum += array_sum($curr); 
      } else if (is_numeric($curr)) { 
       $sum += $curr; 
      } 
      echo $sum; 
    } 
?> 

我想找到數組中的值的總和,並離開字符串。如果有人知道答案plz幫助在php中嵌套數組中的整數的總和

+0

哪裏是U卡住? –

+0

我沒有得到所需的結果,即12 –

+0

所以plz幫助,我是新的陣列....我有一點知識陣列和如何遞歸工作 –

回答

1

使用array_walk_recursive走在陣列中的每個元素:

$sum = 0; 
array_walk_recursive($r1, function($v) use (&$sum) { 
    if (is_numeric($v)) $sum += $v; 
}); 
var_dump($sum); # 12 

編輯:使用無array_walk_recursive功能:

function array_walk_recursive_rewrite(array $data) { 
    $sum = 0; 
    foreach ($data as $v) { 
     if (is_array($v)) { 
      $sum += array_walk_recursive_rewrite($v); 
     } elseif (is_integer($v)) { 
      $sum += $v; 
     } 
    } 
    return $sum; 
} 
var_dump(array_walk_recursive_rewrite($r1)); # 12 
+0

**函數($ v)使用(&$ sum)**請你解釋一下這一步嗎? –

+0

@ PHP_USER1:http://stackoverflow.com/a/10304027/67332 –

+0

是否有可能在沒有這個**函數($ v)的情況下使用整個代碼(&$ sum)**。而不是這可以使用任何其他因素我從來沒有使用過這 –