获取具有stdClass对象列的行和具有相同id的sum元素

时间:2017-04-20 18:28:11

标签: php mysql codeigniter foreach

我有订单表,其中一个名为“ordered_goods”的列如下所示:

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.11/moment-timezone-with-data-2010-2020.min.js"></script>

当我收到“status = 0”的所有订单时,它看起来像这样:

"[{"product_id":"3","qua":"3","we":"1350"},{"product_id":"4","qua":"3","we":"1215"},{"product_id":"5","qua":"5","we":"810"}]"

我正在尝试的是将“product_id”= 3的所有“qua”加起来。

我试图在很多方面做到这一点,但没有成功。显然我不知道该怎么做。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果您的列ordered_goods正在存储json,您可以这样做

$amount = 0;
foreach ($orders_status_zero as $row){
    $array = (array)json_decode($row['ordered_goods']);
    $amount +=  array_sum(array_map(function($element){ 
        if($element->product_id == 3) 
            return $element->qua; 
    }, $array));
}

数组映射将数组作为第二个参数(在本例中为每行的ordered_goods),第一个参数是一个匿名函数,它将数组的每个元素作为参数。找到id = 3的产品时,将返回qua属性,并且array_sum将其汇总为$ amount