我想知道如何为我的请求中数组的任何部分返回一个字符串。
该请求可以包含任何键,因此我无法对其进行硬编码。
到目前为止我所做的事情的示例。
$request = [
'empresaId' => '2',
'entidadeId' => [
'507-2',
'1422-2',
],
'dataInicio' => '2021-05-27',
'dataFim' => '2021-05-31',
];
$requestFiltered = Arr::where($request->all(), function($value, $key) {
if (!is_null($value) && ($key != '_token')) {
if (is_array($value)) {
return collect($value)->implode(',');
}
return $value;
}
});
这不会以我期望的方式返回数据。
我不确定我做错了什么。
这是我期望如何返回数组的示例。
[
'empresaId' => '2',
'entidadeId' => '507-2,1422-2',
'dataInicio' => '2021-05-27',
'dataFim' => '2021-05-31',
]
最佳答案
你已经快到了,你可以使用 map
而不是 where
。
where
不用于改变数据,它只是用来查询数据,所以你应该只在闭包中返回一个 bool 值。
map
和 transform
会改变您的数据。
$requestFiltered = collect($request->all())->map(function ($item, $key) {
// Ignore tokens.
if (Str::endsWith($key, '_token')) {
return;
}
// Check for arrays, then implode.
if (is_array($item)) {
return implode(',', $item);
}
return $item;
})
关于php - 如何在 Laravel 7 中的数组索引中返回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67788917/