【问题标题】:Laravel collection map method to flatten multi-dimensionalLaravel 集合图的方法来展平多维
【发布时间】:2020-05-14 23:45:42
【问题描述】:

我有这段代码,我想将集合重命名为不同的键和值。 但是当我使用map 方法时,值返回到它们现有的key 并且我想删除使用映射method 展平多维集合的键

检索模型:

$user = User::find(123)->orderByDesc('created_at')->get()->pluck('name', 'id');

$data = $user->map(function ($value, $key) {
    return [
        'id'   => $key,
        'text' => $value,
    ];
});

预期结果:

$data = [
    [
        'id' => 3,
        'text' => 'Shinka Nibutani',
    ], [
        'id' => 2,
        'text' => 'Kashiwagi Rein',
    ], [
        'id' => 1,
        'text' => 'Alice Zuberg',
    ],
]

实际结果:

$data = [
    3 => [
        'id' => 3,
        'text' => 'Shinka Nibutani',
    ],

    2 => [
        'id' => 2,
        'text' => 'Kashiwagi Rein',
    ],

    3 => [
        'id' => 1,
        'text' => 'Alice Zuberg',
    ],
]

【问题讨论】:

    标签: arrays laravel dictionary collections


    【解决方案1】:

    你只需要在最后添加 values() 。类似的东西:

    $data = $user->map(function ($value, $key) {
        return [
            'id'   => $key,
            'text' => $value,
        ];
    })->values();
    

    Laravel 文档:https://laravel.com/docs/7.x/collections#method-values

    值()

    values 方法返回一个新集合,其中键重置为连续整数:

    $collection = collect([
        10 => ['product' => 'Desk', 'price' => 200],
        11 => ['product' => 'Desk', 'price' => 200]
    ]);
    
    $values = $collection->values();
    
    $values->all();
    
    /*
        [
            0 => ['product' => 'Desk', 'price' => 200],
            1 => ['product' => 'Desk', 'price' => 200],
        ]
    */
    

    【讨论】:

      猜你喜欢
      • 2020-09-13
      • 1970-01-01
      • 2020-05-07
      • 2017-10-08
      • 2017-07-22
      • 2018-09-23
      • 2017-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多