我已经尝试过搜索这个,因为我认为没有人试图这样做是独一无二的。我只是找不到合适的关键词来搜索我的答案!
我有这个数组
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)。 值数组的数量是可变的,并且数组内的值的数量是可变的。
答案 0 :(得分:3)
它使用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);
应该是不言自明的,因为你所做的只是使用相同的键来获取所有最低级元素的乘积。
答案 1 :(得分:2)
虽然sjagr的答案是最好的解决方案,但我有一个替代方法array_column(PHP 5> = 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);
?>
结果将是:
Array
(
[oranges] => 17.6
[apples] => 3.64
[peaches] => 1.2
)