Php 数组中的唯一键
我在symfony中有一个旧的订单系统,它的车内数组如下所示:Php 数组中的唯一键,php,arrays,Php,Arrays,我在symfony中有一个旧的订单系统,它的车内数组如下所示: Array ( [333] => Array ( [product] => Product Object (...) [qty] = 1 [criteria] ) ) Array ( [333] => Array ( [product] =>
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=>将数量添加到车内产品
谢谢大家! 假设每一组条件都有自己的数量,您可以实现如下数组:
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所在的数组内部的数量。编辑:数组搜索是最好的选择吗?