Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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,我在symfony中有一个旧的订单系统,它的车内数组如下所示: Array ( [333] => Array ( [product] => Product Object (...) [qty] = 1 [criteria] ) ) Array ( [333] => Array ( [product] =>

我在symfony中有一个旧的订单系统,它的车内数组如下所示:

    Array
(
    [333] => Array
        (
            [product] => Product Object (...)
            [qty] = 1
            [criteria]
        )

)
Array
(
    [333] => Array
        (
            [product] => Product Object (...)
            [criterias] => Array
                (
                    [criteria1] => 1
                    [criteria2] => 16
                )
        )
)
其中333是已在购物车中的产品id+其特征

现在问题来了,假设用户将相同的产品添加到购物车中,但标准不同

我做了这样的东西来区分:

if((array_key_exists($product->getId(), $products)) AND ($products[$product->getId()]['criteria'] == $criteria))  
     {

       $products[$product->getId()]['qty'] = $products[$product->getId()]['qty'] + $qty;  


     }else{
 // todo == I can't find any solution to this :(
}
上面所说的是:

  • 检查购物车中是否已存在产品id

  • 检查发送的条件是否与购物车中已有的条件匹配

  • if true=>将数量添加到车内产品

正如您可能已经知道的,如果用户将相同的产品添加到不同的标准中,那么它最终将出现在else中

Resume:如何使同一数组中具有相同ID但具有不同值的键

任何想法都将不胜感激


谢谢大家!

假设每一组条件都有自己的数量,您可以实现如下数组:

    Array
(
    [333] => Array
        (
            [product] => Product Object (...)
            [qty] = 1
            [criteria]
        )

)
Array
(
    [333] => Array
        (
            [product] => Product Object (...)
            [criterias] => Array
                (
                    [criteria1] => 1
                    [criteria2] => 16
                )
        )
)

您不能根据产品id和条件创建密钥吗?因此,对于每个组合,您都有类似于散列的内容,比如
333\u标准
。这将解决整个问题,也将消除您的变通方法。或者,作为另一种想法,在
333
键中添加多个数组,这样就可以表示产品id,并且每个版本都有不同的标准作为子数组。我认为这里的主要问题只是重新排列数据。但这是一个可能的任务,或者根本不使用生成的密钥。让
333
只是集合的另一个属性<代码>数组[0]=>['productId=>333,product=>obj,…];array[1]=[productId=333,product=>obj,…]@eisbehr假设我会这样做,那么我以后如何从数组键中去除散列,以便正确查询有关图片等的数据库。?感谢you@waterloomatt如何更新购物车中已存在的特定产品的属性?假设我在集合中有2个条目,一个productId=333,一个productId=225。由于无法使用任何键,我如何设置productID 225所在的数组内部的数量。编辑:数组搜索是最好的选择吗?