Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从字符串到数组的Laravel更改请求输入_Php_Laravel 5 - Fatal编程技术网

Php 从字符串到数组的Laravel更改请求输入

Php 从字符串到数组的Laravel更改请求输入,php,laravel-5,Php,Laravel 5,我正在用自定义查询过滤器构建一个API,在我的过滤器中,有一些规则规定值不能为空,有些字段必须是数组 如果提交了空字段,我已经设法过滤掉了这些字段,但我无法将请求输入转换为数组,有没有办法 这是我的密码: public function removeEmptyFieldsFromRequest($request) { $emptyFields = []; foreach ($request->all() as $name => $value) {

我正在用自定义查询过滤器构建一个API,在我的过滤器中,有一些规则规定值不能为空,有些字段必须是数组

如果提交了空字段,我已经设法过滤掉了这些字段,但我无法将请求输入转换为数组,有没有办法

这是我的密码:

public function removeEmptyFieldsFromRequest($request)
{

    $emptyFields = [];

    foreach ($request->all() as $name => $value)
    {
        if (is_null($value)){
            $emptyFields[] = $name;
        }


        $fields = ['transmissions', 'grades', 'colors', 'equipment', 'lots', 'chassis', 'auctions', 'models'];

        if (in_array($name, $fields)){

           // here need to convert request value from a string into the array
        }


    }

    $request = $request->except($emptyFields);

    return $request;
}

我想使此过滤器在不同情况下可用,我知道如果您的参数类似于字段[0],字段[1],…
您可以通过
$request->field
获取它,它是数组,因此您可以进行检查

is_array($request->field)
在您的情况下,您可以使用下面的代码进行检查

is_array($value)

如果查询字符串是这样的:
/?a=1&b=2&a=3&c=1&a=2

您可以创建一个解析查询字符串的函数,如下所示:

$uri = explode('?', Request::capture()->getRequestUri());
$queryStringArr = explode('&',$uri[1]);
$params = [];
foreach ($queryStringArr as $item) {
    $i = explode('=',$item);
    if (!empty($params[$i[0]])){
        $params[$i[0]]=array_merge((is_array($params[$i[0]]))?$params[$i[0]]:[$params[$i[0]]],[$i[1]]);
    }else{
        $params[$i[0]]=$i[1];
    }
}
print_r($params);die;
这就给了我们

Array
(
    [a] => Array
        (
            [0] => 1
            [1] => 3
            [2] => 2
        )

    [b] => 2
    [c] => 1
)

我没有对它进行过太多测试,所以请自己考虑一下。

我尝试“is_数组($request->input($name))”`但是它没有帮助您的查询字符串看起来像这样吗?
?array_field[]=val1&array_field[]=val2
?@CodeZilla不,不幸的是,这就是问题所在。这是API,我不能控制前端,但我可以添加验证,但如果系统自动转换它,它会很酷