Числа из базы данных отказываются быть добавленными / умноженными

0

Я вытаскиваю набор чисел из базы данных MySQL и пытаюсь сделать для них некоторую простую математику, чтобы вычислить общую цену для выставления счета, но PHP не сотрудничает. Я думал, что это может быть проблема с типом принуждения, поэтому я попытался добавить несколько вызовов intval и floatval, но все равно общее число всегда выводится в 0.

Вот соответствующий код.

$totalSum = 0;
$parts = $db->select("*", "WHERE record_id=$id", "recordparts");

    foreach($parts as &$part) {
        $part['priceTotal'] = (floatval($part['price']) * intval($price['quantity'])) + (floatval($part['laborTime']) * floatval($price['laborRate']));
        $totalSum += $part['priceTotal'];
    }

    $record['parts'] = $parts;
    $record['partsSum'] = $totalSum;

И вот результаты вышеуказанной операции

parts => Array (1)
  0 => Array (8)
    id => "18"
    partNumber => "92-000001"
    record_id => "17"
    price => "11.5"
    laborTime => "2"
    laborRate => "65"
    quantity => "1"
    priceTotal => 0
partsSum => 0
  • 2
    Можете ли вы выводить / выводить значения одно за другим после соответствующей операции intval / floatval?
  • 2
    У вас есть одна опечатка, $price["quantity"] , но это не должно учитывать результат 0.
Показать ещё 1 комментарий
Теги:
math
types

2 ответа

1
Лучший ответ

Ничего себе, посмотрев на это, это была просто опечатка (ну, две). По какой-то причине я случайно переключаюсь с $parts на использование $price в качестве массива. Фиксация, которая исправила мою проблему.

foreach($parts as &$part) {
        $price = floatval($part['price']);
        $quantity = intval($part['quantity']);
        $laborTime = floatval($part['laborTime']);
        $laborRate = floatval($part['laborRate']);

        $part['priceTotal'] = ($price * $quantity) + ($laborTime * $laborRate);
        $totalSum += $part['priceTotal'];
}
  • 0
    Я только что нашел это. Да, это была проблема.
1

Из любопытства, почему бы вам просто не позволить MySQL делать умножение? Я предполагаю, что это все равно будет быстрее.

$totalSum = 0;
$parts = $db->select("*, price * quantity AS priceTotal", "WHERE record_id = $id", "recordparts");

foreach($parts as &$part) {
    $totalSum += $part['priceTotal'];
}

$record['parts'] = $parts;
$record['partsSum'] = $totalSum;
  • 0
    Я мог бы делать все это в SQL, но мне уже нужны были все отдельные числа для целей отображения, и мне все равно пришлось их циклически просматривать на общую сумму, и я просто нахожу более понятным чтение математики в PHP, чем в SQL.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню