<?php
$json = '{"7":{"id":"7","goods_id":"3","supplier_id":"8","order_num":"2000","price":"27.00","total_price":"54000"},"8":{"id":"8","goods_id":"3","supplier_id":"9","order_num":"455","price":"23.00","total_price":"10465"},"9":{"id":"9","goods_id":"3","supplier_id":"10","order_num":"500","price":"18.00","total_price":"9000"},"10":{"id":"10","goods_id":"1","supplier_id":"5","order_num":"1000","price":"48.00","total_price":"48000"},"11":{"id":"11","goods_id":"1","supplier_id":"6","order_num":"2000","price":"44.00","total_price":"88000"},"12":{"id":"12","goods_id":"1","supplier_id":"7","order_num":"1020","price":"40.00","total_price":"40800"}}';
$arr = json_decode($json, true);
$json2 = '{"3":{"real_price":15.74,"have_num":2955,"sale_num":4140,"real_num":2955,"lack_num":-1185},"1":{"real_price":15.8,"have_num":4020,"sale_num":3780,"real_num":3780,"lack_num":0}}';
$arr2 = json_decode($json2, true);
$arr = array (
7 =>
array (
'id' => '7',
'goods_id' => '3',
'supplier_id' => '8',
'order_num' => '2000',
'price' => '27.00',
'total_price' => '54000',
),
8 =>
array (
'id' => '8',
'goods_id' => '3',
'supplier_id' => '9',
'order_num' => '455',
'price' => '23.00',
'total_price' => '10465',
),
9 =>
array (
'id' => '9',
'goods_id' => '3',
'supplier_id' => '10',
'order_num' => '500',
'price' => '18.00',
'total_price' => '9000',
),
10 =>
array (
'id' => '10',
'goods_id' => '1',
'supplier_id' => '5',
'order_num' => '1000',
'price' => '48.00',
'total_price' => '48000',
),
11 =>
array (
'id' => '11',
'goods_id' => '1',
'supplier_id' => '6',
'order_num' => '2000',
'price' => '44.00',
'total_price' => '88000',
),
12 =>
array (
'id' => '12',
'goods_id' => '1',
'supplier_id' => '7',
'order_num' => '1020',
'price' => '40.00',
'total_price' => '40800',
),
);
$arr2 = array (
3 =>
array (
'real_price' => 15.74,
'have_num' => 2955,
'sale_num' => 4140,
'real_num' => 2955,
'lack_num' => -1185,
),
1 =>
array (
'real_price' => 15.8,
'have_num' => 4020,
'sale_num' => 3780,
'real_num' => 3780,
'lack_num' => 0,
),
);
$goodsArr2 = [];
foreach ($arr as $item) {
$goodsArr2[$item['goods_id']][] = $item;
}
$goods = [];
foreach ($goodsArr2 as $i => $item) {
$goods[$i] = [
'count' => count($item),
'order_num' => array_sum(array_column($item, 'order_num'))
];
}
foreach ($goods as $i => $item) {
if ($item['order_num'] > $arr2[$i]['real_num']) {
foreach ($arr as $j => $vo) {
if ($vo['goods_id'] == $i) {
$scaleNum = (int)($arr[$j]['order_num'] /$item['order_num'] * $arr2[$i]['real_num']);
$arr[$j]['order_num'] = max($scaleNum, 1);
}
}
}
}
var_export($arr);