我有2个数组
Array ( [1] => Manufacturer [2] => Location [3] => Hours [4] => Model )
和
Array ( [Manufacturer] => John Deere [Location] => NSW [Hours] => 6320 )
我需要将它们组合起来并将第一个数组(制造商,位置,小时,模型)中的值与第二个数组中的名称相关联,如果第一个数组中的特定值在第二个数组中找不到关联名称关联空。对于该示例,我需要来自上述数组的结果是像这样的数组
Array ( [Manufacturer] => John Deere [Location] => NSW [Hours] => 6320 [Model] => )
如果我使用简单的array_combine,则表示PHP警告:array_combine()[function.array-combine]:两个参数应该具有相同数量的元素
答案 0 :(得分:3)
您可以使用简单的foreach
循环:
$combined = array();
foreach ($keys as $key) {
$combined[$key] = isset($values[$key]) ? $values[$key] : null;
}
$keys
是第一个包含键的数组,而$values
是第二个包含相应值的数组。如果$values
中没有相应的值,则值为null
。
答案 1 :(得分:0)
假设$ array1和$ array2按顺序排列,我认为这样可行:
$newArray = array();
while (list(,$data) = each($array1)) {
if (isset($array2[$data])) {
$newArray[$data] = $array2[$data];
} else {
$newArray[$data] = "";
}
}
答案 2 :(得分:0)
试试array_merge()
。此示例似乎可以执行您想要的操作:
<?php
$keys = array( 1 => "Manufacturer", 2 => "Location", 3 => "Hours", 4 => "Model") ;
$canonical = array_combine(array_values($keys), array_fill(0, count($keys), null));
$data = array("Manufacturer" => "John Deere", "Location" => "NSW", "Hours" => 6320);
print_r(array_merge($canonical, $data));
答案 3 :(得分:0)
如果键数组是$ array1,并且带有值的关联数组是$ array2:
$new_array = array_merge(array_fill_keys(array_flip($array1), ''), $array2));
这会反转你的键阵列,并用''值填充它。然后,当您合并数组时,第二个数组将覆盖任何重复的键,但未填充的键将保留。