Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP将多维数组的值相乘_Php_Arrays_Multidimensional Array_Multiplication - Fatal编程技术网

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中,只存在橙子。我已经给了您一个答案,下次发布代码时,我们可以看到您迄今为止的尝试@就像斯加格所说的那样,新来的苏格兰人在内心的前额之外思考。