一尘不染

警告:遇到非数字值

php

最近更新到PHP 7.1,并开始出现以下错误

警告:第29行遇到非数字值

这是第29行的样子

$sub_total += ($item['quantity'] * $product['price']);

在本地主机上一切正常。

任何想法如何解决这个问题或它是什么?


阅读 429

收藏
2020-05-26

共1个答案

一尘不染

似乎在PHP
7.1中,如果遇到非数字值,将发出警告。请参阅此链接

这是与您收到的警告通知有关的相关部分:

当使用期望数字或它们的赋值等效项的运算符强制无效字符串时,将引入新的E_WARNING和E_NOTICE错误。当字符串以数字开头但包含尾随非数字字符时,将发出E_NOTICE;而
当字符串不包含数字值时,将发出E_WARNING。

我猜 $ item [‘quantity’]$ product [‘price’]
都不包含数值,因此在尝试相乘之前请确保它们确实存在。可能在计算$ sub_total之前使用某种条件,例如:

<?php

if (is_numeric($item['quantity']) && is_numeric($product['price'])) {
  $sub_total += ($item['quantity'] * $product['price']);
} else {
  // do some error handling...
}
2020-05-26