foreach ($num as $key => &$v) { // 使用了&v
$v = array_reduce(array_values($v), 'array_merge', []);
$Onedigit = $v['payment_amount'] % 10;
$tendigit = $v['payment_amount'] % 100;
if ($Onedigit != 0 || $tendigit != 0) {
if ($totalamount + $v['payment_amount'] <= $amount) {
$totalamount += $v['payment_amount'];
$voucher_ids[] = $v['voucher_id'];
unset($num[$key]);
}
}
}
$diff_amount = $amount - $totalamount;
$diff = 10000; // 差值最小值
if ($diff_amount > $diff) { //再次循环将 名字换一下 $val
foreach ($num as $val) {
$curDiff = $amount - ($totalamount + $val['payment_amount']);
if ($curDiff < -10000 ) {
continue;
}
$totalamount += $val['payment_amount'];
$voucher_ids[] = $val['voucher_id'];
$diff_amount = $amount - $totalamount;
if($diff_amount < $diff) {
break;
}
}
}
如果不这样会出现 重复的数据 !