2009-07-01 41 views
60

我有一個數組,看起來像從規則陣列

$numbers = array('first', 'second', 'third'); 

我想有將這個數組作爲輸入,並返回一個數組,看起來功能創建同鍵和值的ASSOC陣列像:

array(
'first' => 'first', 
'second' => 'second', 
'third' => 'third' 
) 

我不知道是否有可能使用array_walk_recursive或類似的東西...

+0

哇,謝謝您的回答如此迅速。前兩個答案會起作用,但我只是在尋找一些更優雅的東西。 – jimiyash 2009-07-01 01:20:28

回答

131

可以使用array_combine功能,像這樣:

$numbers = array('first', 'second', 'third'); 
$result = array_combine($numbers, $numbers); 
+1

這對單行者來說很棒。這裏是到期月的用例:$ months = array_combine(範圍(日期('Y'),日期('Y')+ 10),範圍(日期('Y'),日期('Y')+10 ))。 – axiom82 2014-07-28 19:52:11

4

這個簡單的方法應該工作:

$new_array = array(); 
foreach($numbers as $n){ 
    $new_array[$n] = $n; 
} 

你也可以這樣做:

array_combine(array_values($numbers), array_values($numbers))

+0

也感謝您的幫助 – jimiyash 2009-07-01 01:23:30

0

這應該這樣做。

function toAssoc($array) { 
    $new_array = array(); 
    foreach($array as $value) { 
     $new_array[$value] = $value; 
    }  
    return $new_array; 
}