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)
钥匙column1和column2固定.他们不会改变.
我需要对这个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循环的数量.我希望我的代码更加模块化,因为有些情况需要的行为如下:
我需要工作的公式太多了.但我非常有信心,它基本上都是首先按行排列或按行逐列进行混合.
希望得到关于值到函数的映射的一些建议.
更新:
最终,我重新设计了我的架构,使这个问题消失了.所以这个问题不再适用于我.
逐行是最容易映射的:
$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)