为什么我不能使用 array_merge() 合并数组?
Why can't I merge arrays using array_merge()?
我尝试合并数组但没有成功。数组如下所示:
//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。还是解决不了。
您需要将新数组分配给一个变量。新数组将包含合并后的数组,您可以在循环中反复合并这些数组。这完全取决于你的键和值是什么让它按照你想要的方式工作,但文档很清楚 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);
我尝试合并数组但没有成功。数组如下所示:
//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。还是解决不了。
您需要将新数组分配给一个变量。新数组将包含合并后的数组,您可以在循环中反复合并这些数组。这完全取决于你的键和值是什么让它按照你想要的方式工作,但文档很清楚 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);