Php 拒绝添加/乘以数据库中的数字

Php 拒绝添加/乘以数据库中的数字,php,mysql,math,types,Php,Mysql,Math,Types,我正在从MySQL数据库中提取一组数字,并试图对它们进行一些简单的数学运算,以计算出要放入发票的总价,但PHP不配合。我认为这可能是一个类型强制问题,所以我尝试添加了一些intval和floatval调用,但总数始终为0 这是相关代码 $totalSum = 0; $parts = $db->select("*", "WHERE record_id=$id", "recordparts"); foreach($parts as &$part) { $par

我正在从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

哇,看了之后,它只是一个打字错误(嗯,两个)。无论出于什么原因,我都随机地从使用
$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'];
}

出于好奇,为什么不让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;

在进行相应的intval/floatval操作后,您能否逐个输出/转储值?您有一个输入错误,
$price[“quantity”]
,但这不应解释结果为0。实际上,如果您向右滚动,我有两个输入错误,每个乘法集中一个。我希望我能把你标记为被接受的答案。我刚刚找到了这个。是的,这就是问题所在。我可以在SQL中完成这一切,但我已经需要所有的单个数字来显示,并且无论如何都必须循环它们来求和,我只是发现用PHP阅读数学比用SQL更清晰。