Pao*_*der 5 laravel laravel-5.7
如何使用 laravel 集合优雅地执行以下操作?
将$baseMap的值映射 为集合的键。
底图:
$baseMap = [
'name' => 'new_name',
'year' => 'new_year',
];
Run Code Online (Sandbox Code Playgroud)
集合:
$items = collect([
[
'name' => 'name1',
'year' => '1000',
'not_in_basemap' => 'foo'
],
[
'name' => 'name2',
'year' => '2000',
'not_in_basemap' => 'foo'
],
//...
]);
Run Code Online (Sandbox Code Playgroud)
最终结果:
$result =[
[
'new_name' => 'name1',
'new_year' => '1000',
],
[
'new_name'=> 'name2',
'new_year' => '2000',
],
];
Run Code Online (Sandbox Code Playgroud)
我知道如何用普通的 php 来做到这一点,只是想知道一个好的集合版本会是什么样。谢谢!
感谢 @vivek_23 和 @IndianCoding 给了我想法,我最终得到了以下结果:我做了一个小编辑以确保映射和项目键对齐。所以你不必担心错位,一切都在 laravel 集合中!
$baseMap = collect($baseMap)->sortKeys();
$result = $items->map(function ($item) use ($baseMap) {
return $baseMap->values()
->combine(
collect($item)->sortKeys()->intersectByKeys($baseMap)
)
->all();
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4420 次 |
最近记录: |