我什至不知道从哪里开始,我的大脑现在很困惑。所以我想我应该寻求一些帮助!基本上我正在开发一个 opencart 网站,并且我正在尝试更改一个数组,以便它将 Product_ids 分组到类别中。
这是它吐出的数组:
Array
(
[0] => Array
(
[product_id] => 50
[category] => Shop by Carton
)
[1] => Array
(
[product_id] => 52
[category] => Shop by Carton
)
[2] => Array
(
[product_id] => 53
[category] => Shop by Carton
)
[3] => Array
(
[product_id] => 54
[category] => Shop by Carton
)
[4] => Array
(
[product_id] => 55
[category] => Shop by Box
)
[5] => Array
(
[product_id] => 56
[category] => Shop by Box
)
[6] => Array
(
[product_id] => 57
[category] => Shop by Box
)
[7] => Array
(
[product_id] => 58
[category] => Shop by Box
)
)
但这就是我希望得到的:
Array
(
[0] => Array
(
[category] => Shop by Carton
[product_id] => Array
(
[product_id] => 50
[product_id] => 52
[product_id] => 53
[product_id] => 54
)
)
[1] => Array
(
[category] => Shop by Box
[product_id] => Array
(
[product_id] => 55
[product_id] => 56
[product_id] => 57
[product_id] => 58
)
)
)
这是创建数组的代码:
$data['children'] = $this->model_catalog_product->getProductChildren($this->request->get['product_id']);
$data['options'] = array();
$product_option_value_data = array();
foreach ($data['children'] as $product) :
foreach ($this->model_catalog_product->getProductOptions($product['product_id']) as $option) :
foreach ($option['product_option_value'] as $option_value) :
$product_option_value_data = $option['name'].' '.$option_value['name'];
endforeach;
$data['options'][] = array(
'product_id' => $product['product_id'],
'category' => $product_option_value_data
);
endforeach;
endforeach;
echo '<pre>';print_r($data['options']);echo '</pre>';
如果有人可以帮助我实现我所追求的目标,那就太好了。
最佳答案
第一件事
Array
(
[product_id] => 50
[product_id] => 52
[product_id] => 53
[product_id] => 54
)
不可能导致 key 重复,所以我改变了一点 试试这个代码
$lists = [
[
"product_id" => 50,
"category" => "Shop by Carton"
],[
"product_id" => 52,
"category" => "Shop by Carton"
],[
"product_id" => 53,
"category" => "Shop by Carton"
],[
"product_id" => 54,
"category" => "Shop by Carton"
],[
"product_id" => 55,
"category" => "Shop by Box"
],[
"product_id" => 56,
"category" => "Shop by Box"
],[
"product_id" => 57,
"category" => "Shop by Box"
],[
"product_id" => 58,
"category" => "Shop by Box"
]
];
//Define temp data
$tmps = [];
foreach ($lists as $list) {
$cat = $list["category"];
$pro = $list["product_id"];
if (!isset($tmps[$cat])) {
$tmps[$cat] = [];
}
//add product to temp
$tmps[$cat][] = ["product_id" => $pro];
}
//Define output
$outputs = [];
//format data from temp
foreach ($tmps as $cat => $pros) {
$outputs[] = [
"category" => $cat,
"product_id" => $pros,
];
}
print_r($outputs);
希望这有帮助。
关于php - 更改 php 数组以显示不同的值和产品 ID 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46209828/