猿问

如何将 foreach 函数或变量初始化为 0

使用最新版本的 PHP 7,我显示以下错误消息:


警告:遇到非数字值


似乎在 PHP 7.1 中,如果遇到非数字值,则会发出警告。


它说为了避免这些错误,我必须初始化为 0。


当使用 forech 时,他们可以向我解释如何做到这一点。


$meQty = 0;

foreach ($qty as $id_courses => $valueqty) {

    $meQty = $meQty + $valueqty;

}

错误行: $meQty = $meQty + $valueqty;


购物车.php


<?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);

产品添加到购物车没有问题

使用var_dump($_SESSION['qty']);显示我

array(1) { [0]=> int(1) }


暮色呼如
浏览 191回答 2
2回答

汪汪一只猫

您应该为 foreach 之外的变量分配适当的值&nbsp; $meQty&nbsp; =&nbsp; 0;&nbsp;&nbsp; foreach ($qty as $id_courses => $valueqty) {&nbsp; &nbsp; &nbsp; $meQty = $meQty + $valueqty;&nbsp; }您还可以检查有效的数字内容&nbsp; foreach ($qty as $id_courses => $valueqty) {&nbsp; &nbsp; &nbsp; $meQty = ( is_numeric($valueqty) ?&nbsp; ($meQty + $valueqty ) :&nbsp; ($meQty +0);&nbsp; }

凤凰求蛊

作为更(IMO)合适的解决方案,如果这是您在该循环中的唯一操作,则可以使用&nbsp;array_sum()array_sum — 计算数组中值的总和例子:$meQty&nbsp;=&nbsp;array_sum($yourArray);
随时随地看视频慕课网APP
我要回答