使用最新版本的PHP 7,我会显示以下错误消息:
警告:遇到的非数字值
在PHP 7.1中,如果遇到非数字值,将发出警告。
它说要避免这些错误,我必须初始化为0。
当使用前叉时,他们可以向我解释如何做。
(True,'')
错误行:ecpg
cart.php
$meQty = 0;
foreach ($qty as $id_courses => $valueqty) {
$meQty = $meQty + $valueqty;
}
产品毫无问题地添加到购物车中
使用$meQty = $meQty + $valueqty;
给我
<?php
$items = (isset($_SESSION['cart']) && is_array($_SESSION['cart'])) ? $_SESSION['cart'] : array();
$itemCount = count($items);
$qty = (isset($_SESSION['qty']) && is_array($_SESSION['qty'])) ? $_SESSION['qty'] : array();
$couponDiscount = (isset($_SESSION['couponCode']));
$total = 0;
$num = 1;
$meQty = 0;
$itemId = "";
$meCount = $itemCount;
foreach ($qty as $id_courses => $valueqty) {
$meQty = $meQty + $valueqty;
}
foreach ($items as $id_courses => $item) {
$itemId = $itemId . $item . ",";
}
$array = explode(',', $itemId);
$strMarcas = str_repeat('?,', count($array) - 1) . '?';
$strTipos = str_repeat('i', count($array));
$stmt = $con->prepare("SELECT id_courses, courses, image, price FROM courses WHERE id_courses in ($strMarcas)");
$stmt->bind_param($strTipos, ...$array);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($id_courses, $courses, $image, $price);
答案 0 :(得分:5)
作为一种更合适(IMO)的解决方案,如果这是该循环中的唯一操作,则可以使用array_sum()
array_sum —计算数组中值的总和
示例:
$meQty = array_sum($yourArray);
答案 1 :(得分:2)
您应该为foreach之外的变量分配一个适当的值
$meQty = 0;
foreach ($qty as $id_courses => $valueqty) {
$meQty = $meQty + $valueqty;
}
您还可以检查有效的数字内容
foreach ($qty as $id_courses => $valueqty) {
$meQty = ( is_numeric($valueqty) ? ($meQty + $valueqty ) : ($meQty +0);
}