编辑代码

<?php 
//JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 

$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);
// var_export($arr2);

$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($goods);
var_export($arr);