php二维数组求和,求助
大家讲道理
大家讲道理 2017-04-11 08:57:58
[PHP讨论组]
$arr = array(
  0 => array('0' => 24505.72, '1' => 6126.43, 4 => 23),
  1 => array(0 => 3865.64, 1 => 3265.64, 32 => 23)
);

例如这是一个二维数组,求出里面每个一维数组对应相同地址的和,两个一维数组第一个数相加求和,第二个数相加求和...,如果值不是数字以0代替


是这个意思,每个对应地址求和,如果不是数字或者为空以0代替

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
阿神
$arr = array(
    0 => array('0' => 24505.72, '1' => 6126.43, 4 => 23),
    1 => array(0 => 3865.64, 1 => 3265.64, 32 => 23, 'hy' => 11)
);

$new_array = array();
foreach ($arr as $key => $value) {
    $val = array_values($value);
    foreach ($val as $k => $v) {
        if(! isset($new_array[$k]))
            $new_array[$k] = $v;
        else
            $new_array[$k] += $v;
    }
}
print_r($new_array);die;

不知道这个是不是你期望的结果

天蓬老师

以样例而言:如果你的要求是要求出:$arr0+$arr1 , $arr0+$arr1 ,$arr0 ,$arr1 要求数组里下标一样的值累加,那么实际应该先把整个二维数组重新反向索引一下:

$arr_sum=array(); $arr_idx=array();
foreach($arr as $arr_1D){
    foreach($arr_1D as $k=>$v){
        $key='i_'.trim($k); //用来索引原键值,不建议直接用数字值
        $val=is_numeric($v)?$v:($v*1);
        if(!isset($arr_sum[$key])){ 
            $arr_sum[$key]=$val;
            $arr_idx[$key]=array($v);
        }else{
            $arr_sum[$key]+=$val;
            $arr_idx[$key][]=$v;
        }
    }
}

print_r($arr_sum); //输出的是原$arr各个键对应的数字和
print_r($arr_idx); //输出的是原$arr各个键对应的数组元素
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号