Вы не должны помещать код инициализации и окончательные итоговые вычисления в l oop:
$negative = 0;
$positive = 0;
foreach ($getalltotal as $key => $value) {
$amount = $value['amount'];
if ($amount < 0) {
$negative += $amount;
} else {
$positive += $amount;
}
}
$total = $positive + $negative;
$data = array(
'positive' => $positive,
'negative' => $negative,
'total' => $total,
);
Поступая так же, как вы, $negative
и $positive
постоянно сбрасывались на 0
, и последний массив был массивом массивов, потому что вы добавили квадратные скобки $data[] = ...
.
Также бесполезно (и непродуктивно) использовать строковую функцию, например strpos()
, в вашем случае: вы работаете с числа, поэтому вы можете использовать числовые операторы (в данном случае оператор сравнения <
).