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

时间:2019-06-17 15:30:57

标签: php

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

  

警告:遇到的非数字值

在PHP 7.1中,如果遇到非数字值,将发出警告。

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

当使用前叉时,他们可以向我解释如何做。

(True,'')

错误行:ecpg

cart.php

$meQty = 0;
foreach ($qty as $id_courses => $valueqty) {
    $meQty = $meQty + $valueqty;
}

产品毫无问题地添加到购物车中

enter image description here


使用$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);

2 个答案:

答案 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);
  }