2009-07-17 87 views
4

我有這個多維PHP陣列(下面)。像這樣合併或組合一個數組?在PHP


Array 
(
    [0] => Array 
     (
      [2] => [email protected] 
     ) 

    [1] => Array 
     (
      [4] => [email protected] 
     ) 

    [2] => Array 
     (
      [3908] => [email protected] 
     ) 

    [3] => Array 
     (
      [2548] => [email protected] 
     ) 

    [4] => Array 
     (
      [3099] => [email protected] 
     ) 

    [5] => Array 
     (
      [5283] => [email protected] 
     ) 

) 

我不知道我怎麼會合並嗎?或結合?或者乾脆使用PHP(,下面的)這樣做。


Array 
(
    [2] => [email protected] 
    [4] => [email protected] 
    [3908] => [email protected] 
    [2548] => [email protected] 
    [3099] => [email protected] 
    [5283] => [email protected] 
) 

幫助

回答

0

只需經過陣列和存儲到另一個。

$a = array(0 => array(1) , 1=> array(3)); 
$another=array(); 
foreach ($a as $k=>$v){  
    foreach ($v as $y=>$z){ 
     $another[$k]=$z; 
    }  
} 
print_r($another); 
+0

這是不必要地慢,並且是大n^2的O。您可以簡單地連接數組,這將保留鍵和值。 – 2009-07-17 06:04:42

+0

您失去了依賴array_push的密鑰。你必須用$ another替換$ [$ y] = $ z。 – scronide 2009-07-17 06:06:03

+0

謝謝......沒有注意到鑰匙需要完整編輯 – ghostdog74 2009-07-17 06:09:32

-1

這個怎麼樣?


foreach($old_arr as $old) 
{ 
    $key = key($old[0]); 
    $new[ $key ] = $old[0][$key]; 
} 

編輯:沒關係不知道以前的答案已得到糾正。

3

您可以通過call_user_func_array()將第二級元素「提升」到第一級元素。和而array_merge()重新索引陣列,array_replace()不但保留了原始密鑰,這使得這一個班輪:

$a = call_user_func_array('array_replace', $a); 

測試:

<?php 
$a = array (
    array (2 => '[email protected]'), 
    array (4 => '[email protected]'), 
    array (3908 => '[email protected]'), 
    array (2548 => '[email protected]'), 
    array (3099 => '[email protected]'), 
    array (5283 => '[email protected]'), 
); 
$a = call_user_func_array('array_replace', $a); 
var_dump($a);