2009-07-01 5 views
60

j'ai un tableau qui ressembleCréer un tableau assoc avec les touches égales et les valeurs d'un réseau régulier

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

Je veux avoir une fonction qui prendra ce tableau en entrée et retourne un tableau qui ressemblerait comme:

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

Je me demande s'il est possible d'utiliser array_walk_recursive ou quelque chose de similaire ...

+0

wow, merci pour vos réponses rapidement. Les deux premières réponses vont marcher, mais je cherchais quelque chose d'un peu plus élégant. – jimiyash

Répondre

131

Vous pouvez utiliser la fonction array_combine, comme ceci:

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

C'est génial pour one-liners. Voici un cas d'utilisation pour le mois d'expiration: $ mois = array_combine (range (date ('Y'), date ('Y') + 10), range (date ('Y'), date ('Y') + 10)). – axiom82

4

Cette approche simple devrait fonctionner:

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

Vous pouvez aussi faire quelque chose comme:

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

+0

merci pour votre aide également – jimiyash

0

Cela devrait le faire.

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