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 ...


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);

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))


0

Isso deve servir.

function toAssoc($array) {
    $new_array = array();
    foreach($array as $value) {
        $new_array[$value] = $value;
    }       
    return $new_array;
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.