Как указать ключи массива с карты

Мне нужно построить массив, который имеет пользовательские ключи на основе другого массива.

Идея алгоритма:

  $list = [10, 20, 30];

$map = array_map(function ($item) {
return [
$item => 'banana' . time(),
];
}, $list);

Что бы я ожидаемый $map быть:

  [
10 => 'banana 12345',
20 => 'banana 12346',
30 => 'banana 12347',
]

Что (очевидно) $map является:

  [
0 => [
10 => 'banana 12345',
],
1 => [
20 => 'banana 12346',
],
2 => [
30 => 'banana 12347',
],
]

Как указать ключи массива для этой ситуации?

2

Решение

использование array_fill_keys функция

$list = [10, 20, 30];
$arr = array_fill_keys($list, 'banana');

Обновить

$list = [10, 20, 30];

$map = array_map(function ($item) {
return 'banana' . time();},
array_fill_keys($list));
0

Другие решения

Если я не понял ваше требование. У меня есть пара подходов. Здесь оба должны работать на вас.

1-й подход(Мой)

$keys = [10, 20, 30];
$initials = 'banana'
$time = time();
$array = array_fill_keys($keys, $initials." " .$time);
print '<pre>';
print_r($array);
print '</pre>';

Выход:

Array
(
[10] => banana 1514305494
[20] => banana 1514305494
[30] => banana 1514305494
)

2-й подход (Ваш)

$list = [10, 20, 30];
$time = time();
$map = array_map(function ($item) use ($time){
return [$item => 'banana ' . $time];
}, $list);

foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($map)) as $k=>$v){
$singleDimension[$k]=$v;
}
print '<pre>';
print_r($singleDimension);
print '</pre>';

Выход:

Array
(
[10] => banana 1514305494
[20] => banana 1514305494
[30] => banana 1514305494
)
0