Utwórz tablicę assoc z równymi kluczami i wartościami ze zwykłej tablicy

85

Mam tablicę, która wygląda jak

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

Chcę mieć funkcję, która przyjmie tę tablicę jako dane wejściowe i zwróci tablicę, która wyglądałaby następująco:

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

Zastanawiam się, czy da się zastosować array_walk_recursivelub coś podobnego ...

jimiyash
źródło
wow, dzięki za tak szybkie odpowiedzi. dwie pierwsze odpowiedzi będą działać, ale szukałem czegoś bardziej eleganckiego.
jimiyash

Odpowiedzi:

172

Możesz użyć tej array_combinefunkcji w następujący sposób:

$numbers = array('first', 'second', 'third');
$result = array_combine($numbers, $numbers);
Noah Medling
źródło
1
To jest świetne dla jednoliniowców. Oto przypadek użycia miesiąca wygaśnięcia: $ miesiące = array_combine (range (date ('Y'), date ('Y') + 10), range (date ('Y'), date ('Y') + 10 )).
axiom82
4

To proste podejście powinno działać:

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

Możesz też zrobić coś takiego:

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

Artem Russakovskii
źródło
0

To powinno wystarczyć.

function toAssoc($array) {
    $new_array = array();
    foreach($array as $value) {
        $new_array[$value] = $value;
    }       
    return $new_array;
}
Alan Storm
źródło