2010-08-18 71 views
0

我有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-結合]:這兩個參數有元素

+0

另請參見http://stackoverflow.com/questions/3503066 – Gumbo 2010-08-18 17:57:45

+0

你不必不得不使用array_combine()與我在你之前的問題中發佈的解決方案:http://stackoverflow.com/questions/3514640/ PHP-關聯陣列正則表達式陣列/ 3514692#3514692 – palswim 2010-08-18 18:01:29

回答

0

假設$陣列1和$數組2的數量相等,以便爲你列出他們,我想這會工作:

$newArray = array(); 
while (list(,$data) = each($array1)) { 
    if (isset($array2[$data])) { 
    $newArray[$data] = $array2[$data]; 
    } else { 
    $newArray[$data] = ""; 
    } 
} 
3

可以使用SIMP勒foreach循環:

$combined = array(); 
foreach ($keys as $key) { 
    $combined[$key] = isset($values[$key]) ? $values[$key] : null; 
} 

哪裏$keys是您的第一陣列與鍵和$values是你的第二陣列與相應的值。如果$values中沒有相應的值,則值將爲null

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)); 
0

如果鍵的陣列陣列1 $,並與值關聯數組是$數組2:

$new_array = array_merge(array_fill_keys(array_flip($array1), ''), $array2)); 

這種反轉的關鍵陣列,加油吧與''值。然後,當你合併數組時,任何重複的鍵將被第二個數組覆蓋,但未填充的鍵將保留。

相關問題