php - 如何在 Laravel 7 中的数组索引中返回字符串

标签 php arrays laravel helper

我想知道如何为我的请求中数组的任何部分返回一个字符串。
该请求可以包含任何键,因此我无法对其进行硬编码。

到目前为止我所做的事情的示例。

$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 值。
maptransform 会改变您的数据。

$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/

相关文章:

arrays - 将哈希压入数组 : last Hash overwriting previous array elements

php - 将到期时间插入数据库并在另一页上倒计时

javascript - Vue从选择框@changed后删除当前数据值

php - 浏览数据库行

javascript - 使用字符串数组而不是整数数组创建 xAxys - Highcharts

laravel - Laravel 中 pluck() 和 list() 的区别?

php - 使用带流明的望远镜

database - 如何从 laravel 表中获取一些特定的列名。 (不是所有列名)

php - 使用 GROUP BY、HAVING、COUNT、ORDER BY 和 2 个表更快地编写此 MySQL 查询的方法

php - 如何计算 MySQL 存储过程中的年龄?