我用数组得到了这个小问题。我有属于一个或多个类别的产品,我需要将它们显示为数组。首先,这是我的代码,仅从产品1获取类别:
$prod = $this->getDi()->productTable->load(1);
$prod_cat = $prod->getCategories();
print_r($prod_cat);
这将输出:
Array ( [0] => 1 )
到目前为止一切顺利。但是,我需要同时为所有存在的产品做同样的事情。所以我这样做:
$act_prod = Array ( 0 => 1 ); //array can contain more than one product, as of now it only contains one
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 ) )
这不是我需要的,而是这个:
Array ( [0] => 1 )
我无法弄清楚什么是错的。你能给我一个提示吗?
谢谢。
答案 0 :(得分:1)
$cat->getCategories()
返回一个数组,每次迭代都会向另一个数组添加一个数组,结果也是如此。
如果要将所有类别合并到数组中,请改用array_merge
:
$active_cat = array();
foreach ($act_prod as $act) {
$cat = $this->getDi()->productTable->load($act);
$active_cat = array_merge($active_cat, $cat->getCategories());
}
并且注意,这样的循环效率非常低,您可以通过一个查询获得所有类别。