2014-01-11 66 views
-1

我有這樣的多維數組:拼合陣列連接鍵與值

$array = array(
    'user1' => array('Miguel'), 
    'user2' => array('Miguel', 'Borges', 'João'), 
    'user3' => array(
     'Sara', 
     'Tiago' => array('Male') 
    ) 
); 

我想把它壓平,轉化爲:

$new_array = array(
    'user1.Miguel', 
    'user2.Miguel', 
    'user2.Borges', 
    'user2.João', 
    'user3.Sara', 
    'user3.Tiago.Male', 
); 

重要:

  • 的關鍵是對我來說非常重要。我希望他們連接在一起, 用句點分隔。
  • 應該與任何級別的嵌套工作。

謝謝!

+0

得到了數組總是3個級別? [這裏](https://eval.in/88216)是三級快速的解決方案,但是這應該是做遞歸 –

+0

您是否嘗試過什麼,或者是你希望別人做你的工作? –

回答

3

儘管在你的問題沒有明確規定,似乎你需要連接字符串鍵,而忽略整數鍵(這可能與is_string($key)可以輕鬆實現)。既然你需要你的代碼「與嵌套任何級別的工作,」遞歸函數會更符合你的目的:

function array_flatten_key($arr){ 
$_arr = array(); 
    foreach($arr as $key => $val){ 
     if(is_array($val)){ 
      foreach(array_flatten_key($val) as $_val){ 
      $_arr[] = is_string($key) ? $key.".".$_val : $_val; 
      } 
     } 
     else{ 
     $_arr[] = is_string($key) ? $key.".".$val : $val; 
     } 
    } 
return $_arr; 
} 

$new_array = array_flatten_key($array); 
print_r($new_array); 

輸出將是:

Array 
(
    [0] => user1.Miguel 
    [1] => user2.Miguel 
    [2] => user2.Borges 
    [3] => user2.João 
    [4] => user3.Sara 
    [5] => user3.Tiago.Male 
)