复制和最后一个条目不存在

时间:2016-07-25 12:50:51

标签: php

我有这个数组

$ G =( “RathiB36E8310”=> “中10”, “JindalB36E8320”=> “中20”, “RathiB36E8310”=> “中5”)

如果存在$pr_vendor$brand$category的相同组合,则我将$cart_item['quantity']添加到其中,因此会更新。 但是我的最后一个条目没有得到更新,并且存在重复值,尽管不在数组条件下。我做错了什么

 $g = array("$pr_vendor$brand$category" => $cart_item['quantity']);
        $keyExists;
        foreach ($wer as $key => $value) {
            if ($key == "$pr_vendor$brand$category") {
                $wer["$pr_vendor$brand$category"]+=$cart_item['quantity'];
                $keyExists = "true";
            }
        }
        if (!$keyExists == "true") {
            $wer[] = $g;
    }

输出(预期)

$ WER =阵列( “RathiB36E8310”=> “中15”, “JindalB36E8320”=> “中20”)

2 个答案:

答案 0 :(得分:2)

对您的代码进行了一些改进:

  • 使用PHP函数array_key_exists()检查数组中是否存在该值,而不是遍历整个数组。
  • 您应该使用$wer[] = $g连接到$g,而不是$wer。这里有一个数组中的数组,而不是只添加新项目及其数量。我会使用array_merge($g, $wer)

答案 1 :(得分:1)

试试这个:

$wer = array();
    array_key_exists("$pr_vendor$brand$category",$wer) ? $wer["$pr_vendor$brand$category"] += $cart_item['quantity'] : $wer["$pr_vendor$brand$category"] = $cart_item['quantity'];

这将是您的代码更正:

$wer = array();
$keyExists = false;
foreach ($wer as $key => $value) {
   if ($key == "$pr_vendor$brand$category") {
      $wer["$pr_vendor$brand$category"]+=$cart_item['quantity'];
      $keyExists = true;
   }
}
if ($keyExists !== true) {
   $wer["$pr_vendor$brand$category"] = $cart_item['quantity'];
}

你不能使用!$ keyExists =='true':
你可以简单地用!==或!=来比较
2.你也设置了一个字符串$ keyExists你不能否定一个字符串!'true'不能那样工作
3.尝试使用布尔值,这就是它们存在的全部原因(真,假)
4.对于布尔值设置默认值