无法迭代数组[重复]
Posted
技术标签:
【中文标题】无法迭代数组[重复]【英文标题】:Unable to iterate over array [duplicate] 【发布时间】:2022-01-20 04:05:06 【问题描述】:[
"user": null,
"courseId": 18
,
"user":
"id": 1,
"name": "admin",
"aboutUser": null,
"files": null
,
"courseId": 1
,
]
我有一个像上面这样的数组。我想迭代上面数组上的每个项目。但是像下面这样的 foreach 循环显示错误invalid arguments supplied for foreach - Expected type 'iterable|object'. Found 'string|bool'
。我该如何解决这个问题?
foreach ($response as $key)
$count = MyCourse::where('course_id', $key['courseId'])->distinct('student_id')->count();
【问题讨论】:
你先json_decode()
回复吗?
您声称您有一个数组,但错误表明您有一个 string|bool
(尽管这在我看来不像是运行时错误)
@NigelRen no.i 没有。我知道如果我在迭代之前做了 json_decode,我可以迭代数组。但是,在 json decding 之后的数组是一个对象数组。我在最终结果中需要一个对象数组
在 php 中,您可以将 json 解码为对象或数组。除非您添加自己的代码,否则您无法混搭。例如如果你使用json_decode($response)
,你会得到一个对象(可能包含更多对象),如果你使用json_decode($response, true)
,你会得到一个关联数组的数组。
您需要额外的代码(或者可能是一个库,虽然我不知道有任何代码)来将您的json_decode
结果转换为您需要的格式。没有这样的开箱即用功能。
【参考方案1】:
它是 JSON,因此您需要对其进行解码,将 true
作为第二个参数传递以将项目转换为数组而不是对象。
foreach(json_decode($response,true) as $key)
$count = MyCourse::where('course_id', $key['courseId'])->distinct('student_id')->count();
【讨论】:
以上是关于无法迭代数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章
无法遍历我的数组/对象。 Javascript,React Native [重复]