2015-09-30 97 views
-2

我有以下对象两个数组:
第一阵列:$array1合并数组&重命名键用PHP

 Array 
(
    [0] => Array 
     (
      [match] => 1 
      [when] => 2013-10-13 15:00:00 
      [a] => AD 
      [b] => NiP 
      [winner] => c 
      [closed] => 1 
      [event] => Fragbite Masters 
      [format] => 3 
     ) 

    [1] => Array 
     (
      [match] => 2 
      [when] => 2013-10-13 15:00:00 
      [a] => VG 
      [b] => AD 
      [winner] => a 
      [closed] => 1 
      [event] => Starseries 
      [format] => 5 
     ) 

    [2] => Array 
     (
      [match] => 3 
      [when] => 2013-10-13 21:15:00 
      [a] => Serbia 
      [b] => Portugal 
      [winner] => a 
      [closed] => 1 
      [event] => ESEC 
      [format] => 1 
     ) 

) 

第二阵列:$array2

Array 
(
    [0] => Array 
     (
      [match] => 1 
      [a] => 58 
      [b] => 107 
     ) 

    [1] => Array 
     (
      [match] => 2 
      [a] => 174 
      [b] => 162 
     ) 

    [2] => Array 
     (
      [match] => 3 
      [a] => 64 
      [b] => 59 
     ) 

) 

我会喜欢得到这样的东西:

Array 
(
    [0] => Array 
     (
      [match] => 1 
      [when] => 2013-10-13 15:00:00 
      [a] => AD 
      [b] => NiP 
      [winner] => c 
      [closed] => 1 
      [event] => Fragbite Masters 
      [format] => 3 
      [per_a] => 58 
      [per_b] => 107 
     ) 

    [1] => Array 
     (
      [match] => 2 
      [when] => 2013-10-13 15:00:00 
      [a] => VG 
      [b] => AD 
      [winner] => a 
      [closed] => 1 
      [event] => Starseries 
      [format] => 5 
      [per_a] => 174 
      [per_b] => 162 
     ) 

    [2] => Array 
     (
      [match] => 3 
      [when] => 2013-10-13 21:15:00 
      [a] => Serbia 
      [b] => Portugal 
      [winner] => a 
      [closed] => 1 
      [event] => ESEC 
      [format] => 1 
      [per_a] => 64 
      [per_b] => 59 
     ) 

) 

当键名[a][b]从第二阵列已被修改以[per_a][per_b]

事情,我试图合并这两个文件:
array_merge & array_merge_recursive:既让我在那里的$array2合并后的值附加的$array1末的结果。
array_combine:不会工作,因为$array1$array2没有相同数量的元素。

这只是每个文件的一部分,两者在元素方面不相等。 如果你对我有一个答案,这将是apreciated! thx提前!

回答

0

试试这个,你需要修改你的键的功能。请参见Demo

$match:将检查密钥是否存在于两个阵列中。 $whereKey1
$whereKey2:拿起从第二数组中的值,并把它放在你的 新的密钥,其$newkey1$newkey2

function key_compare_func($arr1, $arr2) 
{ 
    $newarray = array(); 
    $match = "match"; 
    $whereKey1 = "a"; 
    $whereKey2 = "b"; 
    $newKey1 = "per_a"; 
    $newKey2 = "per_b"; 

    if(is_array($arr1) && is_array($arr2)){ 
     if($arr1[$match] == $arr2[$match]){ 
      $newarray = array_merge($arr1, array($newKey1 => $arr2[$whereKey1], $newKey2 => $arr2[$whereKey2])); 
     } 
    } 
    return $newarray; 
} 

$modifiedArray = array_map("key_compare_func",$A1, $A2); 
echo '<pre>';print_r($modifiedArray);echo '</pre>'; 

输出:

[0] => Array 
     (
      [match] => 1 
      [when] => 2013-10-13 15:00:00 
      [a] => AD 
      [b] => NiP 
      [winner] => c 
      [closed] => 1 
      [event] => Fragbite Masters 
      [format] => 3 
      [per_a] => 58 
      [per_b] => 107 
     ) 

    [1] => Array 
     (
      [match] => 2 
      [when] => 2013-10-13 15:00:00 
      [a] => VG 
      [b] => AD 
      [winner] => a 
      [closed] => 1 
      [event] => Starseries 
      [format] => 5 
      [per_a] => 174 
      [per_b] => 162 
     ) 
+0

哇...这做的工作!你是男人,很多!整洁,清晰和快速! – amarinediary

+0

欢迎@amarinediary – Noman