如何从地图中指定数组键

时间:2017-12-26 16:03:16

标签: php arrays higher-order-functions

我需要构建一个基于另一个数组的自定义键的数组。

算法理念:

$map

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

$map

(显然) [ 0 => [ 10 => 'banana 12345', ], 1 => [ 20 => 'banana 12346', ], 2 => [ 30 => 'banana 12347', ], ] 是什么:

#ingredients li {
  list-style-type: none;
}

ol {
  padding-bottom: 1em;
}

如何为这种情况指定数组键?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

如果我没有误解你的要求。我有几种方法。这两种方法都适合你。

第一种方法(我的)

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

第二种方法(你的)

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