Cree una matriz asociada con claves y valores iguales a partir de una matriz regular

85

Tengo una matriz que parece

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

Quiero tener una función que tome esta matriz como entrada y devuelva una matriz que se vería así:

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

Me pregunto si es posible usar array_walk_recursiveo algo similar ...

jimiyash
fuente
wow, gracias por tus respuestas tan rápido. las dos primeras respuestas funcionarán, pero solo estaba buscando algo un poco más elegante.
jimiyash

Respuestas:

172

Puedes usar la array_combinefunción, así:

$numbers = array('first', 'second', 'third');
$result = array_combine($numbers, $numbers);
Noah entrometido
fuente
1
Esto es genial para frases ingeniosas. Aquí hay un caso de uso para el mes de vencimiento: $ meses = array_combine (rango (fecha ('Y'), fecha ('Y') + 10), rango (fecha ('Y'), fecha ('Y') + 10 )).
axiom82
4

Este enfoque simple debería funcionar:

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

También puedes hacer algo como:

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

Artem Russakovskii
fuente
0

Esto debería hacerlo.

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