将2个数组乘以多维并删除键

时间:2016-06-26 18:17:08

标签: php arrays multidimensional-array

我有一个包含一些数字的多维数组,我希望将包含键0 的数组的值与一个区域数组中的每个其他键相乘并删除键0

阵列

Array
(
    [0] => Array
        (
            [0] => 3
            [1] => 5
            [2] => 5
            [3] => 6
            [4] => 7
        )

    [1] => Array
        (
            [0] => 2
            [1] => 7
            [2] => 4
            [3] => 2
            [4] => 8
        )

    [2] => Array
        (
            [0] => 4
            [1] => 2
            [2] => 3
            [3] => 2
            [4] => 5
        )
)

这是我想要的结果

Array
(
    [0] => Array
        (
            [0] => 15
            [1] => 15
            [2] => 18
            [3] => 21
        )

    [1] => Array
        (
            [0] => 14
            [1] => 8
            [2] => 4
            [3] => 16
        )

    [2] => Array
        (
            [0] => 8
            [1] => 12
            [2] => 8
            [3] => 20
        )
)

我已经使用foreach和for结合了它,但它仍然不适合我,任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:1)

使用array_maparray_slice函数的解决方案:

// $arr is your initial array
foreach ($arr as &$v) {
    $multiplier = $v[0];
    $v = array_map(function($val) use($multiplier){
        return  $multiplier * $val;        
    }, array_slice($v, 1));
}

print_r($arr);

输出:

Array
(
    [0] => Array
        (
            [0] => 15
            [1] => 15
            [2] => 18
            [3] => 21
        )

    [1] => Array
        (
            [0] => 14
            [1] => 8
            [2] => 4
            [3] => 16
        )

    [2] => Array
        (
            [0] => 8
            [1] => 12
            [2] => 8
            [3] => 20
        )
)