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.