PHP将多维数组的值相乘
我尝试过寻找这个,因为我不认为这是唯一的,没有人尝试过这样做。我就是找不出合适的关键词来搜索我的答案 我有这个数组PHP将多维数组的值相乘,php,arrays,multidimensional-array,multiplication,Php,Arrays,Multidimensional Array,Multiplication,我尝试过寻找这个,因为我不认为这是唯一的,没有人尝试过这样做。我就是找不出合适的关键词来搜索我的答案 我有这个数组 array( 0 => array( 'oranges'=> 4.00, 'apples' => 2.00, ), 1 => array( 'oranges' => 2.00, 'apples' => 1.82, 'peaches' => 1.2, ),
array(
0 => array(
'oranges'=> 4.00,
'apples' => 2.00,
),
1 => array(
'oranges' => 2.00,
'apples' => 1.82,
'peaches' => 1.2,
),
2 => array(
'oranges' => 2.20,
),
);
我想做的是找到所有橘子的值乘以一起(4*2*2.20),所有苹果的值乘以一起(2*1.82)。
值数组的数量是可变的,数组中的值的数量也是可变的 这使用了
foreach
、isset
和您的常规if/else
语句的组合
$products = array();
foreach ($array as $a) {
foreach ($a as $key => $value) {
if (!isset($products[$key])) $products[$key] = $value;
else $products[$key] = $products[$key] * $value;
}
}
var_dump($products);
应该是不言自明的,因为您所做的一切都是使用相同的键获取所有最低级别元素的乘积。这使用了
foreach
、isset
,以及常规if/else
语句的组合
$products = array();
foreach ($array as $a) {
foreach ($a as $key => $value) {
if (!isset($products[$key])) $products[$key] = $value;
else $products[$key] = $products[$key] * $value;
}
}
var_dump($products);
应该是不言自明的,因为您所做的就是使用相同的键获取所有最低级别元素的乘积。虽然sjagr的答案是可能的最佳解决方案,但我有一种(PHP5>=5.5.0)的替代方法,它只需要一个
foreach
循环:
<?php
$arr = array(
array(
"oranges" => 4.00,
"apples" => 2.00
),
array(
"oranges" => 2.00,
"apples" => 1.82,
"peaches" => 1.2
),
array(
"oranges" => 2.20
)
);
$_arr = array();
foreach(array("oranges", "apples", "peaches") as $val){
$_arr[$val] = array_product(array_column($arr, $val));
}
print_r($_arr);
?>
演示:虽然sjagr的答案是可能的最佳解决方案,但我有一种(PHP5>=5.5.0)的替代方法,它只需要一个
foreach
循环:
<?php
$arr = array(
array(
"oranges" => 4.00,
"apples" => 2.00
),
array(
"oranges" => 2.00,
"apples" => 1.82,
"peaches" => 1.2
),
array(
"oranges" => 2.20
)
);
$_arr = array();
foreach(array("oranges", "apples", "peaches") as $val){
$_arr[$val] = array_product(array_column($arr, $val));
}
print_r($_arr);
?>
演示:从一个
foreach()
loop开始,我已经做到了。。。当我在一个foreach中找到一个foreach时,无论它们是否是以前的值集,都会有点毛茸茸的。。。i、 e.在数组1中,之前没有“peaches”的实例,而在数组2中,只存在橙子。我已经给了您一个答案,下次发布代码时,我们可以看到您迄今为止的尝试@scottphpnewbie像sjagr一样,从内心的前肢开始思考。从foreach()
loop开始,我已经做到了。。。当我在一个foreach中找到一个foreach时,无论它们是否是以前的值集,都会有点毛茸茸的。。。i、 e.在数组1中,之前没有“peaches”的实例,而在数组2中,只存在橙子。我已经给了您一个答案,下次发布代码时,我们可以看到您迄今为止的尝试@就像斯加格所说的那样,新来的苏格兰人在内心的前额之外思考。