我有这个数组
$ 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”)
答案 0 :(得分:2)
对您的代码进行了一些改进:
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.对于布尔值设置默认值