如何将键数组与另一个数组中的相应值组合?
问题描述:
我有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-结合]:这两个参数有元素
答
假设$阵列1和$数组2的数量相等,以便为你列出他们,我想这会工作:
$newArray = array();
while (list(,$data) = each($array1)) {
if (isset($array2[$data])) {
$newArray[$data] = $array2[$data];
} else {
$newArray[$data] = "";
}
}
答
可以使用SIMP勒foreach
循环:
$combined = array();
foreach ($keys as $key) {
$combined[$key] = isset($values[$key]) ? $values[$key] : null;
}
哪里$keys
是您的第一阵列与键和$values
是你的第二阵列与相应的值。如果$values
中没有相应的值,则值将为null
。
答
尝试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));
答
如果键的阵列阵列1 $,并与值关联数组是$数组2:
$new_array = array_merge(array_fill_keys(array_flip($array1), ''), $array2));
这种反转的关键阵列,加油吧与''值。然后,当你合并数组时,任何重复的键将被第二个数组覆盖,但未填充的键将保留。
另请参见http://stackoverflow.com/questions/3503066 – Gumbo 2010-08-18 17:57:45
你不必不得不使用array_combine()与我在你之前的问题中发布的解决方案:http://stackoverflow.com/questions/3514640/ PHP-关联阵列正则表达式阵列/ 3514692#3514692 – palswim 2010-08-18 18:01:29