2012-11-29 37 views
-1
[0] => Array 
     (
      [2148] => 2 
      [2149] => 1 
      [2150] => 0 
     ) 
[1] => Array 
     (
      [2148] => 4 
      [2119] => 1 
      [2130] => 0 
     ) 

因此,像這樣將是真棒:具有相同的密鑰需要PHP數組元素進行組合

[array_complete] => Array 
     (
      [2148] => array(2,4) 
      [2149] => 1 
      [2150] => 0 
      [2119] => 1 
      [2130] => 0 
     ) 

展望陣推等,但不能完全肯定。

+0

的MySQL JOIN氣味:)) – moonwave99

回答

0

使用array_merge_recursive把你的數組鍵到非數字的人後。如果按原樣使用,衝突鍵將被重新編號。

所以,總體來說:

$arr1 = array("a2148"=> 2, "a2149" => 1, "a2150" => 0); 
$arr2 = array("a2148" => 4,"a2119" => 1, "a2130" => 0); 
var_dump(array_merge_recursive($arr1,$arr2)); 

輸出:

array(5) { 
    ["a2148"]=> 
    array(2) { 
    [0]=> 
    int(2) 
    [1]=> 
    int(4) 
    } 
    ["a2149"]=> 
    int(1) 
    ["a2150"]=> 
    int(0) 
    ["a2119"]=> 
    int(1) 
    ["a2130"]=> 
    int(0) 
} 

這裏是一個演示:http://codepad.org/k8zvK0nL

1

非常簡單,如果您使用關聯數組,請使用array_merge_recursive。這裏的文檔:http://www.php.net/manual/en/function.array-merge-recursive.php

$array_complete = array_merge_recursive($array[0], $array[1]); 

由於您使用的索引數組,你需要創建一些自定義的。這裏的東西我扔在一起,會爲你的工作(注意它僅適用於一維數組標量值):

$array_complete = array_merge_recursive_indexed($array[0], $array[1]); 

function array_merge_recursive_indexed($a1, $a2) { 
    $merged = array(); 
    $keys = array_merge(array_keys($a1), array_keys($a2)); 
    foreach ($keys as $key) { 
     if (isset($a1[$key])) { 
      if (isset($a2[$key])) { 
       $merged[$key] = array($a1[$key], $a2[$key]); 
      } else { 
       $merged[$key] = $a1[$key]; 
      } 
     } else if (isset($a2[$key])) { 
      $merged[$key] = $a2[$key]; 
     } 
    } 
    return $merged; 
} 
+0

尼斯一個,我唔試圖找出一種方法來改變不涉及自己的功能但失敗的鑰匙。 –

0

試試這個

$array1 = array(2148 => 2, 2149 => 1 , 2150 => 0, 1234 => 3); 
$array2 = array(2148 => 4, 2149 => 1 , 2150 => 0, 123=> 3); 

$res = array(); 


function merge($array1, $array2, array &$res = null) { 
    $loop = false; 
    if(null == $res) { 
     $res = array(); 
     $loop = true; 
    } 
    foreach($array1 as $key => $val) { 
     if(false == array_key_exists($key, $array2) || $array2[$key] == $val) { 
      $res[$key] = $val; 
     } 
     else { 
      if(array_key_exists($key, $res) && false == is_array($res[$key])) { 
       $res[$key] = array($res[$key]); 
      } 
      $res[$key][] = $val; 
     } 
    } 

    if(true === $loop) { 
     return merge($array2, $array1, $res); 
    } 

    return $res; 
} 

print_r(merge($array1, $array2));exit; 
相關問題