我有订单表,其中一个名为“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”加起来。
我试图在很多方面做到这一点,但没有成功。显然我不知道该怎么做。
提前感谢您的帮助。
答案 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