【问题标题】:PHP multiply values of a multidimensional arrayPHP乘以多维数组的值
【发布时间】:2013-12-24 01:17:04
【问题描述】:

我已尝试搜索此内容,因为我认为没有人尝试过这样做的独特性。我只是想不出正确的关键字来搜索以找到我的答案!

我有这个数组

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() 循环开始
  • 我已经做到了……当我到达 foreach 内的 foreach 时,无论它们是否是先前的值集,这有点毛茸茸……即在数组 1 处没有先前的“桃子”实例,并且在数组 2 中仅存在橙子。
  • 我已经给你答案了,下次贴出你的代码,让我们看看你到目前为止的尝试!
  • @scottphpnewbie 像 sjagr 一样,跳出那些内在的 foreaches 去思考。

标签: php arrays multidimensional-array multiplication


【解决方案1】:

这使用了foreachisset 和普通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);

应该是不言自明的,因为您所做的只是使用相同键获取所有最低级别元素的乘积。

【讨论】:

    【解决方案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
    )
    

    演示:https://eval.in/82322

    【讨论】:

      猜你喜欢
      • 2022-07-12
      • 1970-01-01
      • 2019-01-13
      • 2013-06-05
      • 2016-09-11
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      相关资源
      最近更新 更多