Crie uma matriz assoc com chaves e valores iguais de uma matriz regular

85

Eu tenho uma matriz que parece

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

Quero ter uma função que receba essa matriz como entrada e retorne uma matriz semelhante a:

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

Gostaria de saber se é possível usar array_walk_recursiveou algo semelhante ...

Jimiyash
fonte
uau, obrigado por suas respostas tão rapidamente. as duas primeiras respostas funcionarão, mas eu só estava procurando por algo um pouco mais elegante.
Jimiyash 01 de

Respostas:

172

Você pode usar a array_combinefunção da seguinte maneira:

$numbers = array('first', 'second', 'third');
$result = array_combine($numbers, $numbers);
Noah Medling
fonte
1
Isso é ótimo para one-liners. Aqui está um caso de uso para o mês de expiração: $ months = array_combine (range (date ('Y'), date ('Y') + 10), range (date ('Y'), date ('Y') + 10 )).
axiom82
4

Esta abordagem simples deve funcionar:

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

Você também pode fazer algo como:

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

Artem Russakovskii
fonte
0

Isso deve servir.

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