PHP列求和异常:输出数组但求和结果为0的问题咨询
嘿,我来帮你捋捋这个问题~
你输出的数组其实已经包含了正确的求和值 5.99,但最后显示 Price: 0,核心问题是你没有正确从二维数组中取出目标值,或者变量赋值环节出了疏漏。下面分几种常见情况拆解:
1. PHP取值逻辑错误
从你给出的输出 Array ( [0] => Array ( [OrderPrice] => 5.99 ) ) 能看出来,查询结果是一个二维数组。如果你的代码是直接尝试从外层数组取值,比如:
// 错误示例:直接取外层数组的OrderPrice键 $price = $result['OrderPrice']; echo "Price: " . $price;
那肯定拿不到值,因为 OrderPrice 藏在索引为0的内层数组里。正确的取值方式应该是:
// 正确:先取外层索引0的数组,再取OrderPrice键 $price = $result[0]['OrderPrice']; echo "Price: " . $price; // 输出 Price: 5.99
或者换用fetch()替代fetchAll(),直接拿到一维数组,取值更直观:
$row = $pdo->query($sql)->fetch(PDO::FETCH_ASSOC); $price = $row['OrderPrice']; echo "Price: " . $price;
2. 变量初始化后未正确赋值
如果你提前把$price初始化为0,但后续忘了将数组中的值赋给它,比如:
$price = 0; // 初始值设为0 $result = $pdo->query($sql)->fetchAll(); // 遗漏了 $price = $result[0]['OrderPrice']; 这一步 echo "Price: " . $price; // 自然输出0
这种情况只要补上赋值语句就能解决问题。
3. 额外排查:SQL语句(可能性较低)
虽然你已经在数组里看到了5.99,说明SUM计算是正常的,但如果后续遇到类似问题,可以检查下OrderPrice字段是否为数值类型,或者是否包含NULL值(SUM会自动忽略NULL,但字符串类型的数值可能导致计算异常)。
按照上面的方法调整取值逻辑,应该就能顺利拿到正确的求和值啦~
内容的提问来源于stack exchange,提问作者Ben Foster
相关产品推荐
相关产品推荐

