2010-05-26 298 views
1

不知道該怎麼去...php - 用另一個數組的元素替換數組元素?

但是,我有兩個數組,一個具有更新的信息,另一個具有過時的信息...第二個數組中有更多的元素,但我希望用更新的信息「更新」過時的。

這裏的陣列樣子:

//Outdated 
Array (
    [0] => Array 
     (
      [anum] => 3236468462 
      [cid] => 4899097762 
      [mid] => 1104881401 
      [na_title] =>   
      [na_fname] => JOHN     
      [m_initial] => 
      [na_lname] => DOE   
      [na_suffix] =>  
      [na_addr1] => 1234 SAMPLE AVENUE   
      [na_addr2] =>        
      [na_city] => NORWALK   
      [state] => OH 
      [zip] => 
      [zip_plus_4] => 
      [route] => R002 
      [dma_code] => 510334 
     ) 
) 


//Updated 
Array (
    [1] => Array 
     (
      [0] => YUD990 
      [1] => 98 
      [2] => 1234 Sample Avenue 
      [3] => 
      [4] => Norwalk 
      [5] => OH 
      [6] => 44857-9215 
      [7] => 3236468462 
     ) 
) 

爲了澄清,我想:

(1)匹配起來的值[7]從更新的陣列與[ANUM值],然後使用[2],[3],[4]的值更新過時數組中的[na_addr1],[na_addr2],[na_city],[state],[zip],[zip_plus_4] ],[5],[6](我知道我需要拆分更新的[6]以便將它映射到過時的地圖)

感覺就像我在做是非常令人困惑...對不起... ...

+0

我想知道兩件事。 1.爲什麼兩個數組都只有一個元素是多維的? 2.爲什麼你的第二個數組以索引1開頭? – Babiker 2010-05-26 01:22:11

回答

1

假設更新數組的結構永遠不會改變,您可以使用下面的代碼。 (我假設「拉鍊」是第5位和zip_plus_4是最後4位數字,但我不清楚他們應該正是如此。)

$old_array['anum'] = $new_array[7]; 
$old_array['na_addr1'] = $new_array[2]; 
$old_array['na_addr2'] = $new_array[2]; 
$old_array['na_city'] = $new_array[3]; 
$old_array['state'] = $new_array[4]; 
$zip_code = explode('-', $new_array[6]); 
$old_array['zip'] = $zip_code[0]; 
$old_array['zip_plus_4'] = $zip_code[1]; 

我不知道爲什麼第二個數組不使用自己的一組匹配鍵。它會更具可讀性並有助於保持事物的一致性。例如,如果您最終添加了另一個字段,則某些元素可能會偏移一個,這隻會導致頭痛。但是如果數組使用相同的密鑰,則可以使用下面的代碼,一切都會好的。

$old_array['anum'] = $new_array['anum']; 
$old_array['na_addr1'] = $new_array['na_addr1']; 
(etc) 
+0

此外,如果鍵匹配,您可以簡單地添加它們。 $ old_array = $ new_array + $ old_array; 當鍵衝突時,第一個數組中的一個(在+運算符的左側)將被保留。 – Daniel 2010-05-26 05:23:32

2

您更新的數組需要有匹配的鍵,否則沒有辦法知道值應該如何取代舊的。然後標準數組合並工作。

$new = array_merge($outdated, $updated); 
相關問題