For 循环在第一次迭代后停止
For Loop Stops after First Iteration
我这里有这个 for 循环,由于 $due = 0
的值,它在第一个循环后停止循环。如果 $due
的值不是 0
,则循环运行正常并且一切正常——问题是,这个条件必须始终为零。把我的头撞在墙上。有任何想法吗?这是循环:
for ($i = 0; $i < $unpaid->getInvoiceQuantity($customer_id); $i++) {
$each_invoice_id = $request->input('invoice_id' . $i);
$whats_due = DB::table('invoices')
->select('due')
->where('id','=', $request->input('invoice_id' . $i))
->first();
$invoice_payment_total = $request->input('total' . $i);
$inv_id_array = array('invoice_id' => $request->input('invoice_id' . $i), 'payment_id' => $payment_id,
'no_invoice' => false);
DB::table('payment_applications')->insert($inv_id_array);
$due = 0;
if ($whats_due->due == $invoice_payment_total) {
$due = 0;
}
if ($whats_due->due > $invoice_payment_total) {
$due = $whats_due->due - $invoice_payment_total;
}
$update_array = array('due' => $due);
DB::table('invoices')->where('id', $request->input('invoice_id' . $i))
->update($update_array);
$payment_application_update_array = array('amount' => $request->input('total' . $i));
DB::table('payment_applications')->where('invoice_id', $request->input('invoice_id' . $i))
->update($payment_application_update_array);
}
其中一个更新必须是更改发票数量,并使其低于 $i
,因此不再满足循环条件。
您应该将值保存在变量中,而不是每次都调用该方法。
$quantity = $unpaid->getInvoiceQuantity($customer_id);
for ($i = 0; $i < $quantity; $i++) {
// rest of loop
}
我这里有这个 for 循环,由于 $due = 0
的值,它在第一个循环后停止循环。如果 $due
的值不是 0
,则循环运行正常并且一切正常——问题是,这个条件必须始终为零。把我的头撞在墙上。有任何想法吗?这是循环:
for ($i = 0; $i < $unpaid->getInvoiceQuantity($customer_id); $i++) {
$each_invoice_id = $request->input('invoice_id' . $i);
$whats_due = DB::table('invoices')
->select('due')
->where('id','=', $request->input('invoice_id' . $i))
->first();
$invoice_payment_total = $request->input('total' . $i);
$inv_id_array = array('invoice_id' => $request->input('invoice_id' . $i), 'payment_id' => $payment_id,
'no_invoice' => false);
DB::table('payment_applications')->insert($inv_id_array);
$due = 0;
if ($whats_due->due == $invoice_payment_total) {
$due = 0;
}
if ($whats_due->due > $invoice_payment_total) {
$due = $whats_due->due - $invoice_payment_total;
}
$update_array = array('due' => $due);
DB::table('invoices')->where('id', $request->input('invoice_id' . $i))
->update($update_array);
$payment_application_update_array = array('amount' => $request->input('total' . $i));
DB::table('payment_applications')->where('invoice_id', $request->input('invoice_id' . $i))
->update($payment_application_update_array);
}
其中一个更新必须是更改发票数量,并使其低于 $i
,因此不再满足循环条件。
您应该将值保存在变量中,而不是每次都调用该方法。
$quantity = $unpaid->getInvoiceQuantity($customer_id);
for ($i = 0; $i < $quantity; $i++) {
// rest of loop
}