将 Javascript 对象数组转换并迭代为 PHP 数组

Convert and iterate through Javascript object array to PHP array

我将以下内容发送到我正在处理的 PHP/Laravel 端点。我需要将其转换为 PHP 数组,以便我可以遍历成员,但我似乎无法对其执行 json_decode()

{
  levels: [
  {role_id:1, access_level_id:3}, 
  {role_id:2, access_level_id:1}, 
  {role_id:3, access_level_id:2}], 
  category_id: 3
}

在我的后端,我的方法如下

 public function myfunctionname (Request $request)
{
  $levels = json_decode($request->levels);
}

我希望能够将 $request 级别中的项目作为 PHP 数组进行迭代,但 $levels 返回为空

我想我做错了什么。

可以的话请指导 谢谢

您的密钥没有正确引用,这是 json_decode 期望的格式,这就是您得到空值的原因。要遍历项目,最好使用 json_decode($jsonString, true);注意第二个参数设置为 true,第二个参数将 return 一个数组而不是 \stdClass.

类型的对象

参见以下示例:

https://3v4l.org/GM5fR

仅当您使用 javascript 生成 json:

时才阅读此解决方案

当通过 ajax 发送 json 时,您可以使用 JSON.stringify:

将其转换为常规 json 字符串
var v = {
  levels: [
  {role_id:1, access_level_id:3}, 
  {role_id:2, access_level_id:1}, 
  {role_id:3, access_level_id:2}], 
  category_id: 3
};
var j = JSON.stringify(v);
console.log(j);
{"levels":[{"role_id":1,"access_level_id":3},{"role_id":2,"access_level_id":1},{"role_id":3,"access_level_id":2}],"category_id":3}

... 你可以在 PHP.

上使用 json_decode(..., true) 对其进行解码