【问题标题】:Multiplying 2 array multidimensional and remove key乘以 2 数组多维并删除键
【发布时间】:2016-06-26 18:17:07
【问题描述】:

我有一个包含一些数字的多维数组,我想将包含键 0 的 数组的值与一个区域数组中的其他键相乘并擦除 key 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 组合了它,但它仍然不适合我,知道怎么做吗?

【问题讨论】:

  • 你这样做是为了什么?把你的代码放在这里

标签: php arrays multidimensional-array


【解决方案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
        )
)

【讨论】:

  • array_fill 就像创建一个新数组并重新启动每个键?
  • @JhonnyJr.,只是创建一个新的“需要”数组
  • 我知道,我只是问了array_fill的功能,顺便说一下你的答案很完美,非常感谢:)
  • 不客气。 array_fill 在这种情况下是最佳选择:无需遍历每个数组值进行乘法运算。它只乘一次并将当前数组替换为所需的数组
  • 我明白了,再次感谢您的解释。很抱歉打扰您,我认为它只适用于键 0 与键 1 相乘,而不适用于所有键。当我尝试从键 2 更改值时,它看起来仍然相同。还是我应该使用 for 循环来组合它?
猜你喜欢
  • 2013-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-12
  • 2023-04-02
  • 1970-01-01
  • 2023-03-27
  • 2019-05-29
相关资源
最近更新 更多