我有来自多个时间输入的时间请求
<form>
...
<input type="text" name="times[]">
<input type="text" name="times[]">
...
</form>
在我的控制器中dd($request->times)
看起来像这样
array:3 [
0 => "2:25 AM"
1 => "5:35 AM"
2 => "5:40 AM"
]
如何使用laravel集合将此请求映射到此
[
[
'time' => '2:25 AM',
],
[
'time' => '5:35 AM',
],
[
'time' => '5:40 AM',
],
]
我试过这个
$timesArray = collect([$request->times]);
$times = $timesArray->mapWithKeys(function ($item, $key) {
return [ 'time' => $item[$key] ];
})->toArray();
但它只返回
array:1 [
"time" => "2:25 AM"
]
感谢。
答案 0 :(得分:2)
您不需要使用mapWithKeys
,而是试图在没有密钥的情况下映射数组值,因此map
会这样做。
$times = collect($request->times)
->map(function ($time) {
return [ 'time' => $time ];
})
->toArray();
此外,$request->times
已经是一个数组,因此您不必再将其包装在方括号中,或者在数组中创建数组。
答案 1 :(得分:1)
试试这个
$timesArray = [];
foreach($request->times as $time){
$timesArray[] = ['time' => $time];
}