У меня есть такой массив:
Array
(
[0] => Array
(
[DEB_Date] => 2018-01-06
[DEB_Total] => 100.00
[DEB_Nb_Days] => 181
)
[1] => Array
(
[DEB_Date] => 2018-07-06
[DEB_Total] => 100.00
[DEB_Nb_Days] => 0
)
)
Я хочу иметь своего рода отчет в зависимости от DEB_Nb_Days.
Итак, мой сценарий следующий:
// Init the array
$arr['0_to_30']['DEB_Total'] = 0;
$arr['31_to_60']['DEB_Total'] = 0;
$arr['61_to_90']['DEB_Total'] = 0;
$arr['91_to_120']['DEB_Total'] = 0;
$arr['121_and_more']['DEB_Total'] = 0;
// Loop between the debtors
foreach($debtors as $debtor){
if ($debtor['DEB_Nb_Days'] >= 0 || $debtor['DEB_Nb_Days'] <= 30) { $arr['0_to_30']['DEB_Total'] += $debtor['DEB_Total']; }
if ($debtor['DEB_Nb_Days'] >= 31 || $debtor['PAY_Nb_Days'] <= 60) { $arr['31_to_60']['DEB_Total'] += $debtor['DEB_Total']; }
if ($debtor['DEB_Nb_Days'] >= 61 || $debtor['PAY_Nb_Days'] <= 90) { $arr['61_to_90']['DEB_Total'] += $debtor['DEB_Total']; }
if ($debtor['DEB_Nb_Days'] >= 91 || $debtor['PAY_Nb_Days'] <= 120) { $arr['91_to_120']['DEB_Total'] += $debtor['DEB_Total']; }
if ($debtor['PAY_Nb_Days'] >= 121) { $arr['121_and_more']['DEB_Total'] += $debtor['DEB_Total']; }
}
У меня должно получиться вот что:
$arr['0_to_30']['DEB_Total'] = 100;
$arr['31_to_60']['DEB_Total'] = 0;
$arr['61_to_90']['DEB_Total'] = 0;
$arr['91_to_120']['DEB_Total'] = 0;
$arr['121_and_more']['DEB_Total'] = 100;
Но на самом деле результат такой:
$arr['0_to_30']['DEB_Total'] = 200;
$arr['31_to_60']['DEB_Total'] = 200;
$arr['61_to_90']['DEB_Total'] = 200;
$arr['91_to_120']['DEB_Total'] = 200;
$arr['121_and_more']['DEB_Total'] = 0;
Что мне здесь не хватает, пожалуйста?
Спасибо.
$debtor['DEB_Nb_Days'] >= 31 || $debtor['PAY_Nb_Days'] <= 60 Вы должны использовать &&, а что такое PAY_Nb_Days? Включите отчеты об ошибках, чтобы получать уведомления о неопределенных индексах.
Все ваши условия «ИЛИ» (||) должны быть условиями «И» (&&)






Вы можете реструктурировать набор условий if, чтобы сначала искать наивысшие, а затем использовать else, чтобы уменьшить количество сравнений ...
foreach ($debtors as $debtor) {
if ($debtor['DEB_Nb_Days'] >= 121) {
$arr['121_and_more']['DEB_Total'] += $debtor['DEB_Total'];
}
else if ($debtor['DEB_Nb_Days'] >= 91) {
$arr['91_to_120']['DEB_Total'] += $debtor['DEB_Total'];
}
else if ($debtor['DEB_Nb_Days'] >= 61) {
$arr['61_to_90']['DEB_Total'] += $debtor['DEB_Total'];
}
else if ($debtor['DEB_Nb_Days'] >= 31) {
$arr['31_to_60']['DEB_Total'] += $debtor['DEB_Total'];
}
else {
$arr['0_to_30']['DEB_Total'] += $debtor['DEB_Total'];
}
}
(Это также исправляет то, что в некоторых случаях вы используете PAY_Nb_Days вместо DEB_Nb_Days).
Возможно изменение || к &&