【问题标题】:将对象对象转换为对象数组-php
【发布时间】:2022-01-20 03:03:59
【问题描述】:
 $response = $this->getMyTutors($data, $apiUrl);  
  //print_r($response);
 foreach ($response as $key) {
            $count = MyCourse::where('course_id', $key['courseId'])->distinct('student_id')->count();
        }
$response['followersCount'] = $count;
return response()->json($response);

getMyTutors() 是对端点函数getTutorByCourseId 的 curl 请求。在 curl 请求中,我只是对从端点返回的结果进行 json 解码。如果我没有在 curl 请求中完成 json_decoding,我会得到正确的数据形式。但我必须对结果中的每个项目运行一个 foreach 循环。当我在 curl 中删除 json_decode 时,上面显示的 foreach 循环给出了错误invalid arguments supplied for foreach - Expected type 'iterable|object'. Found 'string|bool'

function getTutorByCourseId(Request $request)
    {
        $course = Course::with(['files:id,FileName,FilePath', 'user:id,name'])
            ->select('id', 'courseDisplayName', 'aboutCourse', 'userId', 'fileId')
            ->where('userId', $request->tutorId)
            ->get();

        if (!empty($course)) {
          //  return response()->json($course);
          return $course;
        }
    }

return response()->json($response); 给出一个对象数组,如下所示。如何将其转换为对象数组?我已经浏览了此链接-Convert object of objects to array of objects (PHP, Laravel)。但不明白如何在我的代码中实现它。我可以得到一些帮助吗?

{
        "0": {
            "user": null,
            "courseId": 18
        },
        "1": {
            "user": {
                "id": 1,
                "name": "admin",
                "aboutUser": null,
                "files": null
            },
            "courseId": 1
        },
 }

print_r($response)在返回json数据前显示如下数组:

Array([0] => Array([user] =>
                    [courseId] => 18)
     [1] => Array([user] => Array([id] => 1
                                [name] => admin
                                [aboutUser] =>
                                [files] =>)
                   [courseId] => 1))

预期输出:

[
        {
            "user": null,
            "courseId": 18
        },
        {
            "user": {
                "id": 1,
                "name": "admin",
                "aboutUser": null,
                "files": null
            },
            "courseId": 1
        },
 ]

return $course in getTutorByCourseId 返回数据如下

[
    {
        "id": 1,
        "courseDisplayName": "ips",
        "userId": 1,
        "fileId": null,
        "user": {
            "id": 1,
            "name": "admin"
        }
    },
    {
        "id": 2,
        "courseDisplayName": "ap",
        "userId": 1,
        "fileId": 1,
        "user": {
            "id": 1,
            "name": "admin"
        }
    }
]

【问题讨论】:

    标签: php arrays laravel eloquent laravel-8


    【解决方案1】:

    最简单的方法是使用 json_encode(),我知道 laravel 有更好的内置方法,但这是我能想到的最接近的方法。

    $response = json_encode(collect($response)->toArray(), JSON_FORCE_OBJECT);
    return response()->json($response);
    

    【讨论】:

      猜你喜欢
      • 2019-09-18
      • 2020-06-15
      • 2016-03-11
      • 2011-06-24
      • 2017-01-14
      • 2019-07-11
      • 1970-01-01
      相关资源
      最近更新 更多