PHP foreach不返回我需要的字符串

时间:2014-04-14 02:42:34

标签: php arrays foreach

我用数组得到了这个小问题。我有属于一个或多个类别的产品,我需要将它们显示为数组。首先,这是我的代码,仅从产品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 ) 

我无法弄清楚什么是错的。你能给我一个提示吗?

谢谢。

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()); 
} 

并且注意,这样的循环效率非常低,您可以通过一个查询获得所有类别。