【问题标题】:merge objects inside array合并数组内的对象
【发布时间】:2020-02-03 09:10:12
【问题描述】:

我的代码在这里返回这样的响应

{
    "code": 422,
    "message": "The given data was invalid.",
    "errors": {
        "0": {
            "first_name": [
                "The first name field is required."
            ]
        },
        "1": {
            "last_name": [
                "The last name field is required."
            ]
        },
        "2": {
            "mobile": [
                "The mobile must be an integer.",
                "The mobile must be at least 9."
            ]
        }
    }
}

我需要组合对象并删除数字才能像这样返回

{
    "code": 422,
    "message": "The given data was invalid.",
    "errors": {

            "first_name": [
                "The first name field is required."
            ],

            "last_name": [
                "The last name field is required."
            ],

            "mobile": [
                "The mobile must be an integer.",
                "The mobile must be at least 9."
            ]

    }
}

private function transformErrors(ValidationException $exception)
{
    $errors = [];

    foreach ($exception->errors() as $field => $message) {
         $errors[]  =  [
              $field  => $message
          ];

    }
    return  (object)$errors;
}

以这种方式处理响应的最佳方法是什么

【问题讨论】:

  • 这个php代码是给codemessageerrors还是只是errors
  • 将您的数组转换为集合,然后使用 flatten 方法。 $finalized_errors = collect($errors); return $finalized_errors->flatten():

标签: arrays laravel eloquent


【解决方案1】:

您可以使用array_values() 函数从错误数组中收集值。像这样的:

$yourArray['errors'] = array_values($yourArray['errors']);

【讨论】:

    【解决方案2】:

    如果我理解正确,你只是想将多维数组转换为一个简单的数组。

    你可以尝试使用:

    private function transformErrors(ValidationException $exception)
    {
        return array_values($exception->errors());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-06
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      相关资源
      最近更新 更多