【问题标题】:Multidimensional array addition多维数组加法
【发布时间】:2013-06-09 21:13:52
【问题描述】:

假设我有两个数组:

$v_4 = array(array(1,2,3),array(4,5,6));
$v_5 = array(array(7,8,9),array(10,11,12));

我应该如何构造一个加法函数来跨这些数组相加,以便得到:

$new_array = array(array(8,10,12),array(14,16,18));

我知道我需要以某种方式使用array_map,但我不确定在多维情况下如何进行。

【问题讨论】:

    标签: php arrays multidimensional-array addition array-map


    【解决方案1】:

    你可以使用

    $new = array();
    foreach(array_map(null, $v_4, $v_5) as $var) {
        $data = call_user_func_array("array_map", array_merge(array(null) , $var));
        $new[] = array_map("array_sum", $data);
    }
    print_r($new);
    

    See Live DEMO

    上面的例子只限于2个数组..如果你有更多类似10..你可以使用这个函数稍加修改

    print_r(array_sum_colums($v_4,$v_5,$v_6));
    

    或者

    print_r(array_sum_colums(array($v_4,$v_5,$v_6)));
    

    See Live DEMO

    功能

    function array_sum_colums() {
        $args = count(func_get_args()) == 1 ? func_get_arg(0) : func_get_args();
        $arg = call_user_func_array("array_map", array_merge(array(null),$args));
        $new = array();
        foreach($arg as $var) {
            $data = call_user_func_array("array_map", array_merge(array(null), $var));
            $new[] = array_map("array_sum", $data);
        }
        return $new ;
    }
    

    【讨论】:

    • 你能解释一下array_merge(array(null), $var)吗? array(null) 的重要性是什么?$var 在那时包含什么?
    • array_merge 只接受数组.....array(null) 是一种向数组添加空值的方法。您可以使用var_dump($var) 来查看 var 包含的内容
    猜你喜欢
    • 2015-03-14
    • 2013-06-05
    • 2016-03-18
    • 2016-09-14
    • 2014-08-08
    • 2013-09-23
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多