2010-05-26 239 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); 
相关问题