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;
    }
?>

我试图找到数组中值的总和并留下字符串。如果有人知道答案请帮忙

4

1 回答 1

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
于 2013-10-10T07:06:37.737 回答