警告:遇到非数字值

新手上路,请多包涵

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

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

这是第 29 行的样子

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

在本地主机上一切正常..

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

原文由 Imran Rafique 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 485
2 个回答

似乎在 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...
}

原文由 djs 发布,翻译遵循 CC BY-SA 3.0 许可协议

对于其他人,在这里回答可能无法解决问题。

我的问题不涉及整数或连接。

我的问题是一个简单的错字(我的代码中有一个错误的字符串)。

 $conn = new PDO($details, $username, $password); -

不知何故,我不小心在我的代码中输入了一个减号 (-)。删除这个解决了我的问题。我的猜测是 PHP 出错了,因为它看到了减号,所以它预计需要在那里执行一些算术运算,但没有参数。

原文由 user2796515 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题