php - 在二维数组中映射值并对值执行函数

Kim*_*cks 5 php arrays mapping

我有这样的二维数组

array(
    array(
        'column1' => 10,
        'column2' => 11
    ),
    array(
        'column1' => 25,
        'column2' => 137
    ),
    array(
        'column1' => 21,
        'column2' => 58
    )
)
Run Code Online (Sandbox Code Playgroud)

钥匙column1column2固定.他们不会改变.

我需要对这个2D数组中的数据执行各种功能.各种功能可以分为两种方式:

  • 首先是行
  • 首先是逐列的

行方式第一函数的示例,

我想在乘以列之前首先按行排列所有数字.

所以预期的行为是(10 + 11)*(25 + 137)*(21 + 58)

逐列第一函数的示例,

我想在乘以行之前先按列逐列总结所有数字.

所以预期的行为是(10 + 25 + 21)*(11 + 137 + 58)

我写出自己的组件功能没有问题.在上面,我只需要两个组件函数sum和product

function sum (adden1, adden2) {
    return adden1 + adden2;
}

function product (multiplicant1, multiplicant2) {
    return multiplicant1 * multiplicant2;
}
Run Code Online (Sandbox Code Playgroud)

问题是映射.我想减少我需要编写的for循环的数量.我希望我的代码更加模块化,因为有些情况需要的行为如下:

  1. 对每行100-(column1 + column2)/ column2执行此操作,然后汇总所有结果.

我需要工作的公式太多了.但我非常有信心,它基本上都是首先按行排列或按行逐列进行混合.

希望得到关于值到函数的映射的一些建议.

更新:

最终,我重新设计了我的架构,使这个问题消失了.所以这个问题不再适用于我.

Ja͢*_*͢ck 1

逐行是最容易映射的:

$a = array(
    array(
        'column1' => 10,
        'column2' => 11
    ),
    array(
        'column1' => 25,
        'column2' => 137
    ),
    array(
        'column1' => 21,
        'column2' => 58
    )
);

echo array_product(array_map('array_sum', $a)), "\n";
Run Code Online (Sandbox Code Playgroud)

逐列需要一个实用函数来将所有列一起放入一个数组中:

echo array_product(array(
  array_sum(array_column($a, 'column1')),
  array_sum(array_column($a, 'column2'))
)), PHP_EOL;

function array_column(array $a, $column)
{
  return array_map(function($item) use ($column) {
    return $item[$column];
  }, $a);
}
Run Code Online (Sandbox Code Playgroud)