最近更新到PHP 7.1并开始收到以下错误
警告:第29行遇到非数字值
这是第29行的样子
$sub_total += ($item['quantity'] * $product['price']);
Run Code Online (Sandbox Code Playgroud)
在localhost一切正常..
任何想法如何解决这个或它是什么?
Yas*_*azk 160
不完全是您遇到的问题,但搜索人员的错误相同.
当我在JavaScript上花费太多时间时,这发生在我身上.
回到PHP我用" +
"而不是" .
" 连接两个字符串并得到了这个错误.
Dan*_*der 86
似乎在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...
}
Run Code Online (Sandbox Code Playgroud)
Rol*_*uhs 48
您可以在没有任何新逻辑的情况下通过将事物转换为数字来解决问题,这可以防止警告并且等同于PHP 7.0及更低版本中的行为:
$sub_total += ((int)$item['quantity'] * (int)$product['price']);
Run Code Online (Sandbox Code Playgroud)
(Daniel Schroeder的答案并不等同,因为如果遇到非数字值,$ sub_total将保持未设置状态.例如,如果打印出$ sub_total,则会得到一个空字符串,这在发票中可能是错误的.你确保$ sub_total是一个整数.)
Jod*_*hop 12
您好, 在我使用 (WordPress) 和 PHP7.4 的情况下,我收到有关数值问题的警告。所以我将旧代码更改如下:
从:
$val = $oldval + $val;
到:
$val = ((int)$oldval + (int)$val);
现在警告消失了:)
我的分页向前和向后链接有这个问题......只需在变量 $Page+1 前面设置 (int ) 并且它工作......
<?php
$Page = (isset($_GET['Page']) ? $_GET['Page'] : '');
if ((int)$Page+1<=$PostPagination) {
?>
<li> <a href="Index.php?Page=<?php echo $Page+1; ?>"> »</a></li>
<?php }
?>
Run Code Online (Sandbox Code Playgroud)
特别是在PHPMyAdmin上发生了这种情况.所以为了更具体地回答这个问题,我做了以下几点:
在文件中:
C:\ampps\phpMyAdmin\libraries\DisplayResults.class.php
Run Code Online (Sandbox Code Playgroud)
我改变了这个:
// Move to the next page or to the last one
$endpos = $_SESSION['tmpval']['pos']
+ $_SESSION['tmpval']['max_rows'];
Run Code Online (Sandbox Code Playgroud)
对此:
$endpos = 0;
if (!empty($_SESSION['tmpval']['pos']) && is_numeric($_SESSION['tmpval']['pos'])) {
$endpos += $_SESSION['tmpval']['pos'];
}
if (!empty($_SESSION['tmpval']['max_rows']) && is_numeric($_SESSION['tmpval']['max_rows'])) {
$endpos += $_SESSION['tmpval']['max_rows'];
}
Run Code Online (Sandbox Code Playgroud)
希望拯救某人有些麻烦......
归档时间: |
|
查看次数: |
249321 次 |
最近记录: |