2015-09-30 99 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