Php $array[$key]=$something创建一个新数组
我有一段php代码,它应该检查数组中单个项的次数,并将数量放入该键的值中 我在问,为什么$duplicates[$item]+=1;创建新数组,而不是将其附加到现有数组 是我得到的输出的图片 这是我的代码:Php $array[$key]=$something创建一个新数组,php,arrays,Php,Arrays,我有一段php代码,它应该检查数组中单个项的次数,并将数量放入该键的值中 我在问,为什么$duplicates[$item]+=1;创建新数组,而不是将其附加到现有数组 是我得到的输出的图片 这是我的代码: $itemQuery = $con->prepare("SELECT cart_value FROM active_carts WHERE username=:prodName"); $itemQuery->bindParam(":prodName" , $uname , PDO
$itemQuery = $con->prepare("SELECT cart_value FROM active_carts WHERE username=:prodName");
$itemQuery->bindParam(":prodName" , $uname , PDO::PARAM_STR);
$itemQuery->execute();
$itemCount = $itemQuery->fetchAll();
$arrax = $itemCount[0]["cart_value"];
$itemArrX = explode(",", $arrax);
$inQuestion = array();
$duplicates = array();
foreach ($itemArrX as $item) {
if (in_array($item , $inQuestion)) {
$counter = 0;
if (!array_key_exists($item , $duplicates)) {
$duplicates[$item] = $counter;
// doesnt even execute
} else {
echo $duplicates[$item]; // echoes a new array every time
$duplicates[$item] += 1;
}
} else {
array_push($inQuestion, $item);
}
}
很简单,您从未在数组中创建该项
$data[$key] = $value; //examine that.
试试这个$duplicates[$item]=$item代码>
然后$duplicates[$item]+=1
如果您只是查找重复值的计数,我喜欢注释中关于数组计数值()的建议。可以通过array\u filter()
来删除非重复值
$itemQuery = $con->prepare("SELECT cart_value FROM active_carts WHERE username=:prodName");
$itemQuery->execute([":prodName"=>$uname]);
$itemArrX = explode(",", $itemQuery->fetchColumn(0));
$itemArrX = ["foo","bar","baz","bar","boo","baz"];
$duplicates = array_filter(array_count_values($itemArrX), function($v){return $v>1;});
$inQuestion = array_unique($itemArrX);
print_r($duplicates);
print_r($inQuestion);
或者这里有一个压缩版本的代码,应该可以正常工作
$itemQuery = $con->prepare("SELECT cart_value FROM active_carts WHERE username=:prodName");
$itemQuery->execute([":prodName"=>$uname]);
$itemArrX = explode(",", $itemQuery->fetchColumn(0));
$itemArrX = ["foo","bar","baz","bar","boo","baz"];
$duplicates = [];
$inQuestion = [];
foreach ($itemArrX as $item) {
if (in_array($item, $inQuestion)) {
echo $duplicates[$item];
$duplicates[$item]++;
} else {
$duplicates[$item] = 1;
$inQuestion[] = $item;
}
}
print_r($duplicates);
print_r($inQuestion);
你到底在问什么?更新了问题@caspaincaldionth你的问题中仍然没有问题。是的,这是一个陈述,所以你想要数组\u计数\u值;)看看例子:$duplicates[$item]+=1;将始终创建一个新阵列!如果(!array_key_存在($item,$duplicates)){$duplicates[$item]=$counter;}否则{$duplicates[$item]=$item;$duplicates,则不创建一个[$item]+=1;var_dump($duplicates);}
aw会吗?那我该怎么办?@caspain$duplicates[$item]=$counter;不会执行,你知道为什么吗?