为什么我不能使用array_merge()合并数组?

时间:2015-01-06 21:17:40

标签: php arrays

我尝试合并数组失败了。数组如下所示:

//var_dump()
array (size=2)
  0 => 
    object(Brand)[177]
      (...)
  1 => 
    object(Brand)[271]
      (...)

这是我使用的代码:

        $premiumBrands = array();

        foreach ($stores as $store) :
            $brands = getBrands($store->brands);

            echo count($brands['premium']).', ';

            if(count($brands['premium']) > 0) {
                array_merge($premiumBrands,$brands['premium']);
            }
        endforeach;

        echo count(premiumBrands);

循环中输出的结果是:2, 0, 0, 1, 0;
最后一个输出的结果是:0;

使用

$premiumBrands = $premiumBrands + $brands['premium'];

不起作用,因为所有数组都以索引键[0]开头 - 所以它只会覆盖premiumBrands

那么如何合并我的数组呢?

是的,我读过the docs。仍然无法解决它。

1 个答案:

答案 0 :(得分:3)

您需要将新数组分配给变量。新数组将包含合并的数组,您可以在循环中反复合并。这一切都取决于你的键和值是什么让它按照你想要的方式工作,但文档清晰http://php.net/manual/en/function.array-merge.php

    $premiumBrands = array();

    foreach ($stores as $store) :
        $brands = getBrands($store->brands);

        echo count($brands['premium']).', ';

        if(count($brands['premium']) > 0) {
            $premiumBrands = array_merge($premiumBrands,$brands['premium']); /// *** ///
        }
    endforeach;

    echo count(premiumBrands);