2017-02-01 50 views
5

Próbowałem utworzyć tablicę przy użyciu funkcji gromadzenia laravel o nazwie mapWithKeys, ale nie mogłem osiągnąć tego, czego potrzebuję.Mapa kolekcji Laravel z Keys

Oto mój kod,

$years = range(1900, date('Y')); 

return collect($years)->mapWithKeys(function($value){ 
    return [$value => $value]; 
})->all(); 

Oczekiwany wynik

Array 
(
    [1900] => 1900 
    [1901] => 1901 
    [1902] => 1902 
    .... 
    [2017] => 2017 
) 

Ale co mam jest

Array 
(
    [0] => 1900 
    [1] => 1901 
    [2] => 1902 
    ... 
    [117] => 2017 
) 

Odpowiedz

2

Przetestowałem ten kod i działa idealnie:

$years = range(1900, date('Y')); 
return collect($years)->map(function($i) { 
    return ['year' => $i]; 
}, $years)->pluck('year', 'year'); 
+0

Array ( [0] => Array ( [1900] => 1900 ) ) Dostaję wartości takie jak ten. –

+0

Zaktualizowałem kod. –

+0

Dzięki. To działa. Ale zastanawiam się, dlaczego nie działa z funkcją mapWithKeys. Jeśli zamieniam [wartość $ => $ wartość] na coś takiego jak ['s'. Wartość $ => wartość $] to działa. Myślę, że problem polega na tym, że klucz i wartość są takie same. –