Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-数组唯一和计数元素_Php_Arrays - Fatal编程技术网

PHP-数组唯一和计数元素

PHP-数组唯一和计数元素,php,arrays,Php,Arrays,我正在开发一个购物车,遇到了一个关于独特购物的问题 假设有一个产品“product a”,用户购买该商品4次,他们的购物车在购物篮中显示为“4”项,存储为: $items = [ "Product A" => array (), "Product A" => array(), "Product B" => array() ]; 因此,当他们查看购物车时,我希望它显示: Product: Quantity: "Product A"

我正在开发一个购物车,遇到了一个关于独特购物的问题

假设有一个产品“product a”,用户购买该商品4次,他们的购物车在购物篮中显示为“4”项,存储为:

$items = [
  "Product A" => array (),
  "Product A" => array(),
  "Product B" => array()
];
因此,当他们查看购物车时,我希望它显示:

Product:          Quantity:

"Product A"          2
"Product B"          1

因此,问题是,是否可以使用计数进行
array\u unique
?所以,我可以存储所有独特的物品,但也可以获得他们订购的物品数量?或者是否有其他方法解决此问题?

您可能需要更改阵列的结构:

$items = [];

function addItem($name, array $data = []){
    global $items;
    $items[$name][] = $data;
}

function countItem($name){
    global $items;
    return count($items[$name]);
}
因此,
$items
将以如下方式结束:

$items = [
    "Product A" => [
        array(),
        array(),
    ],
    "Product B" => [
        array()
    ]
];
如果未定义,
$array[]=$element
将创建一个空数组
$array
。类似地,
$array[“a”][=$element
将创建一个空数组
$array[“a”]
,如果它尚未定义


或者,如果只想存储计数,则必须使用
if(!isset($array[“a”]))$array[“a”]=0$array[“a”]+
递增之前,请执行以下逻辑。

1) 创建产品购物车的空白数组

2) 将项添加到数组时,请选中
array\u key\u exists()

3) 如果不存在,则将项作为键和数量作为值(这是数量)添加到数组中

4) 如果存在,将数量增加1


就是这样。

您的初始数组结构是不可能的,您不能拥有相同的密钥两次。。。如何存储产品及其数量计数器?
$items=[“产品a”=>array(),“产品a”=>array()”]
无效。同一密钥在数组中只能出现一次。请在数组中使用
在将产品添加到carti之前,我认为您应该更改您的查询?并尝试改进它。因此,您可以直接使用您的queryNot
在\u array
中获取此类数据,而不是
isset
array\u key\u exists
。@瞳孔-谢谢。但是我如何才能获得商店中的产品总量呢乒乓球?