【问题标题】:Laravel collections mapWithKeysLaravel 集合 mapWithKeys
【发布时间】:2017-06-18 05:09:21
【问题描述】:

我一直在尝试使用 laravel 的名为 mapWithKeys 的集合函数创建一个数组,但我无法实现我所需要的。

这是我的代码,

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

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

预期结果

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

但我得到的是

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

【问题讨论】:

    标签: php laravel laravel-5.2 laravel-5.3 laravel-collection


    【解决方案1】:

    我已经测试了这段代码,它运行良好:

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

    【讨论】:

    • Array ( [0] => Array ( [1900] => 1900 ) ) 我得到这样的值。
    • 谢谢。有用。但我想知道为什么它不能与 mapWithKeys 函数一起使用。如果我将 [$value => $value] 替换为 ['s'.$value => $value] 之类的东西,它就可以工作。我认为问题在于 key 和 value 相同。
    • @SaravananSampathkumar 在后台mapWithKeys() 使用array_map(),所以它只是重建给定的数组。所以你不能使用这个助手来构建一个具有所需结构的普通数组。
    猜你喜欢
    • 2020-07-03
    • 2021-06-13
    • 2017-03-17
    • 2021-07-20
    • 2016-06-05
    • 2017-07-21
    • 2017-03-07
    • 2017-06-03
    • 1970-01-01
    相关资源
    最近更新 更多