【发布时间】:2014-09-11 04:49:34
【问题描述】:
我整天都在和这个作斗争,希望另一双眼睛能给我一些洞察力。我不确定我是否以正确的方式接近这一点。我有一个列出购买的产品的数组,但是如果产品在数组中重复,我想将属性合并在一起。
$order = $order->getProducts();
$newArray = array();
foreach ($order as $order)
{
$product = new Product($order['product_id']);
$combination = new Combination($order['product_attribute_id']);
$attribute = $combination->getAttributesName($context->language->id);
foreach ($attribute as $attribute)
$attributeName = $attribute['name'];
$newArray[] = array(
'id_product' => $order['product_id'],
'name' => $product->name[$context->language->id],
'combination' => array(
'id_product_attribute' => $order['product_attribute_id'],
'type' => $attributeName
)
);
}
我的数组看起来像这样
Array (
[0] => Array
(
[id_product] => 117
[name] => Sidewinder 1-Foot Extension
[combination] => Array
(
[id_product_attribute] => 172
[type] => Black
)
)
[1] => Array
(
[id_product] => 117
[name] => Sidewinder 1-Foot Extension
[combination] => Array
(
[id_product_attribute] => 173
[type] => Black & Yellow
)
)
[2] => Array
(
[id_product] => 119
[name] => ENV100
[combination] => Array
(
[id_product_attribute] => 0
[type] => Black & Yellow
)
)
)
我想尝试实现这一目标
Array (
[0] => Array
(
[id_product] => 117
[name] => Sidewinder 1-Foot Extension
[combination] => Array
(
[0] => Array
(
[id_product_attribute] => 172
[type] => Black
)
[1] => Array
(
[id_product_attribute] => 173
[type] => Black & Yellow
)
)
)
[1] => Array
(
[id_product] => 119
[name] => ENV100
[combination] => Array
(
[id_product_attribute] => 0
[type] =>
)
)
)
【问题讨论】:
-
array_merge_recursive
-
在某种查找表中存储
id_product- 键是id_product,值是newArray中的索引 -
如果你使用 id_product 作为数组键,这会让生活变得更轻松,否则你必须每次循环整个事情来找到要添加到哪个子数组。
-
@Dagon 我没想到。好主意!会试试看。
-
你能发布一个
var_dump($product);和var_dump($combination)的例子吗?没有任何{}附件的foreach ($attribute as $attribute) $attributeName = $attribute['name'];在这里令人困惑。