PHP在foreach之后组合数组

时间:2014-04-14 05:02:30

标签: php arrays

我有属于类别的产品,我需要获得这些类别并将它们输出为单个数组。这是我的代码:

    $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)。

我应该使用什么才能获得正确的输出?

谢谢。

3 个答案:

答案 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);