【问题标题】:PHP Array Sum with specific key and condition具有特定键和条件的 PHP 数组总和
【发布时间】:2020-05-12 03:30:58
【问题描述】:
数组
(
    [6254] => 数组
        (
            [检查] => 开启
            [数量] => 2
            [名称] => 测试 product_special 一种尺寸
            [总计] => 66.0000
            [价格] => 33.0000
        )

    [6255] => 数组
        (
            [检查] => 开启
            [数量] => 1
            [名称] => 测试卡
            [总计] => 80.85
            [价格] => 33.0000
        )

)

上面是我的数组。

我的代码

foreach($value as $key2 => $value2){
    $name = preg_replace('/\s+/', '', $key);
    echo "<pre>";
    // print_r(array_sum(array_column($value, 'price')));
    print_r($value);
    echo "</pre>";
    exit;
}

想问一下,我如何“专门”加价?尝试过

$totalprice += $value['price'];

不工作


array_sum(array_column($value, 'price'))


但是有一个新问题,如果需要检查“条件”怎么办

如果 "check" = on 只能求和,如果没有 "check" 则忽略数组

【问题讨论】:

  • 您的问题含糊不清?你指的是哪个key
  • 这个array_sum(array_column($value, 'price')) 应该适合你。
  • @ROOT 谢谢它工作正常,然后我还有 1 个问题。假设在我的数组中有“检查”,如果“检查”打开,如何仅对数组求和?有 2 个状态,“开/关”
  • @greenboxgoolu,乐于助人,将您的问题添加到帖子中。
  • 将我的问题添加到底部

标签: php arrays


【解决方案1】:

您需要在 $yourRegex 变量中指定正则表达式模式。

$total= 0;
foreach($value as $key => $value){
    $yourRegex = '/\s+/';
    if(preg_match($yourRegex, '', $key)) {
        $total+= $value['price'];
    }
}

echo $total;

【讨论】:

    【解决方案2】:

    如果数组存储在$value,您应该使用$totalprice += $value2['price'];,因为$value2 本身就是一个数组。

    【讨论】:

    • 但如果我使用 $value2 (它只使用 1 个数组而不是多个)
    • @greenboxgoolu 不,你有 foreach 循环 $value,对于这个 $value 数组的每个元素,你用 $value2['price'] 提取价格
    • $totalprice = 0; $totalprice += $value2['price'];回声“
      ”; print_r($totalprice);回声“
      ”;出口;如果我使用它,它只需要 1 行而不是多行
    • @greenboxgoolu 你的代码中 $key 指的是什么?!
    猜你喜欢
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    • 2010-12-29
    • 2021-11-01
    • 2015-10-21
    • 2022-06-25
    相关资源
    最近更新 更多