我有属于类别的产品,我需要获得这些类别并将它们输出为单个数组。这是我的代码:
$act_prod = array(0=>1,1=>10);
$active_cat = array();
foreach ($act_prod as $act) {
$cat = $this->getDi()->productTable->load($act);
$active_cat[$act] = $cat->getCategories();
}
print_r($active_cat);
将输出:
Array ( [1] => Array ( [0] => 1 ) [10] => Array ( [0] => 2 ) )
这意味着产品1属于类别1,产品10属于类别2,但我不需要所有这些。我只需要像这样的类别:Array(1,2)或Array(0 => 1,1 => 2)。
我应该使用什么才能获得正确的输出?
谢谢。
答案 0 :(得分:1)
修改代码以构建您想要的列表。
$act_prod = array(0=>1,1=>10);
$active_cat = array(); // will be a flat list of categories
foreach ($act_prod as $act) {
$cat = $this->getDi()->productTable->load($act);
foreach($cat->getCategories as $category) {
// if we have not seen this category on any previous category, push it
if(!in_array($cat->getCategories(), $active_cat)) {
array_push($active_cat, $cat->getCategories());
}
}
}
// if desired, sort array first
print_r($active_cat);
答案 1 :(得分:1)
foreach ($act_prod as $act) {
$cat = $this->getDi()->productTable->load($act);
$cats = $cat->getCategories();
foreach($cats as $cat)
{
$active_cat[] = $cat['cat_id'];
}
}
假设cat_id
是您的category id
答案 2 :(得分:1)
您需要展平$active_cat
数组,如下所示:
// ...
foreach ($cat->getCategories() as $category) {
$active_cat[] = $category;
}
// ...
之后,请确保没有重复项:
$active_cat = array_unique($active_cat);