按一个字段对2个对象进行排序,然后从中创建一个新数组

时间:2017-08-04 08:28:46

标签: php arrays database

我有一个基本对象(贷款)和2个辅助对象必须以正确的顺序迭代。这2个辅助对象是(强制付款)和(延期)。 所有对象都来自DataBase,这2个辅助对象具有字段" startDate"日期时间类型。

我需要使用我的主对象Loan在for循环中进行计算,并在每次迭代时将Loan $ date变量更改一个月,并在每次迭代时检查修改日期是否等于Forced Payment或Deferral startDate ,用次要对象开始一些计算,然后返回主Loan for循环,然后继续。

因此,为了继续解决这个算法,我需要通过" startDate"对这两个对象进行排序。字段,然后从这个对象生成一个按日期排序的数组,如果修改后的贷款日期等于此数组的任何日期,将在每次迭代时检查。

这2个对象的var_dumo如何:

Forced Payments : 
array(1) { [0]=> array(5) { ["id"]=> int(101010109) ["startDate"]=> object(DateTime)#566 (3) { ["date"]=> string(26) "2000-04-30 00:00:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(15) "Europe/Helsinki" } ["value"]=> float(343) ["rate"]=> float(3) ["duration"]=> int(10) } } 

Deferrals :
array(1) { [0]=> array(4) { ["id"]=> int(1) ["type"]=> int(0) ["startDate"]=> object(DateTime)#572 (3) { ["date"]=> string(26) "2001-08-31 00:00:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(15) "Europe/Helsinki" } ["endDate"]=> int(14) } }

这是我的循环,除了一些想法外,它不会给你任何东西。 我想将已排序的Array Result放在循环中的某个位置。检查修改日期是否等于数组结果中的日期(我在此问题中询问)。如果是,请启动一些新计算,然后返回并继续算法。

for ($i = 0; $i < $duration; $i++){
              $interest = $capital * ($rate / 100) / $frequency;
              array_push($allInterests,$interest);
              array_push($allPayments,$payment);
              $amortization = $payment - $interest;
              $remaining = $capital - $amortization;
                //calculate totals for table headers output in Twig :
                $interestTotal += $interest; $amortizationTotal += $amortization; 
                $inverseCapital = $capital * -1;
                $paymentTotal = $amortizationTotal + $interestTotal;

              $this->array[$i] = array(
                          'Date' => $date->format('d/m/Y'),
                          'Capital' => $capital,
                          'Rate' => $rate,
                          'Interest' => $interest,
                          'Payment' => $payment,
                          'Amortization' => $amortization,
                          'Remaining' => $remaining,
                          'InterestTotal' => $interestTotal,
                          'AmortizationTotal' => $amortizationTotal,
                          'PaymentTotal' => $paymentTotal,
                          'InverseCapital' => $inverseCapital,
                      );

              $capital = $remaining;
              $M = 12/$frequency;
              $months = (12/$frequency). ' months';
              $this->dateCalculator($date, $day, $M, $case);    


        } 

0 个答案:

没有答案