PHP array_merge组合具有相同值的数组

时间:2014-04-28 15:54:30

标签: php arrays

我有两个数组,我合并为一个,我有几个可能是重复的。我已经查看了这些例子并且没有多大意义。这是我想要实现的一个例子。

array1 ('Make and Model 1', 'Make and Model 2', 'Make and Model 1'...);
array2 ('Serial Number 1', 'Serial Number 2', 'Serial Number 3'...);
array3 ('Other Make and Model 1', 'Other Make and Model 2', 'Other ake and Model 3'...);
array4 ('Other Serial Number 1', 'Other Serial Number 2', 'Other Serial Number 3'...);
$make = array_merge($array1, $array3);
$serial = array_merge($array2, $array4);
foreach (array_combine($make, $serial) as $model => $number): 
     if(($model == "") || $model == "Other"):
...Code...
endif;
endforeach;

现在你可以看到我有两个Make和Model 1。正在发生的事情是,它是组合阵列,但是用第二个替换第一个Make和Model 1,然后用比客户的客户得到的少一个项目显示我正在尝试做的事情。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

数组可以包含重复的值,但由于显而易见的原因,不能包含重复的键。 array_combine将覆盖与其找到的每个重复键对应的值。

假设您的所有序列号都是唯一的,一个简单的解决方案是交换您的array_combine以使序列号成为关键:

foreach (array_combine($serial, $make) as $number => $model):

如果“make”和“serial number”之间存在一对多的关系,您可能需要考虑更改数据结构,以使每个make对应一个序列号数组。