我有php订单数组,并且正在将此数组发送给运输服务,但是我的客户有2到3个订单,订单名称相同,shop_id
。我要发送第3次运输,这是一个问题,必须只发送1个具有shop_id的运输,并且必须是总价。
我该怎么做?我的数组输出如下。
Array
(
[date] => 2019-05-23
[name] => Alex
[shop_id] => 1
[price] => 13.45
)
Array
(
[date] => 2019-05-23
[name] => Alex
[shop_id] => 1
[price] => 22.45
)
Array
(
[date] => 2019-05-23
[name] => Alan
[shop_id] => 3
[price] => 83.56
)
我的数组代码:
print("<pre>".print_r($orders,true)."</pre>");
我的数组必须是:
Array
(
[date] => 2019-05-23
[name] => Alex
[shop_id] => 1 // LOOK AT SAME shop_id ones in array and
[price] => 35.90 // do total price them and delete 1 more items.
)
Array
(
[date] => 2019-05-23
[name] => Alan
[shop_id] => 3
[price] => 83.56
)
我的代码;
$newarray = array();
foreach($arr as $ar)
{
foreach($ar as $k => $v)
{
if(array_key_exists($v, $newarray))
$newarray[$v]['price'] = $newarray[$v]['price'] + $ar['price'];
else if($k == 'shop_id')
$newarray[$v] = $ar;
}
}
print("<pre>".print_r($newarray,true)."</pre>");
输出
Array
(
)
答案 0 :(得分:0)
您可以构建一个由shop-id索引的结果数组。然后遍历数据数组,并检查该键是否已存在。如果键不存在,则将该项目添加到结果数组。如果该物品存在,请更新价格。
$data = [
[
"date" => "2019-05-23",
"name" => "Alex",
"shop_id" => 1,
"price" => 12.34,
],
[
"date" => "2019-05-23",
"name" => "Alex",
"shop_id" => 2,
"price" => 12.34,
],
[
"date" => "2019-05-23",
"name" => "Alex",
"shop_id" => 1,
"price" => 23.45,
],
];
$result = [];
foreach ($data as $item) {
$key = 'SHOP-ID-'.$item['shop_id'];
if (!array_key_exists($key, $result)) {
$result[$key] = $item;
} else {
$result[$key]['price'] += $item['price'];
}
}
var_dump($result);