转换并通过Javascript对象数组迭代到PHP数组

时间:2020-10-02 18:27:40

标签: php json laravel-7

我将以下内容发送到我正在处理的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);
}

我希望能够以PHP数组的形式遍历$ request级别中的项目,但是$ levels返回为空

我想我对此做错了。

请指导您是否可以 谢谢

2 个答案:

答案 0 :(得分:1)

仅当您使用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)对其进行解码。

答案 1 :(得分:0)

您的密钥未正确引用,这是json_decode期望的格式,这就是您获取null的原因。要遍历项目,最好使用json_decode($ jsonString,true);请注意,第二个参数设置为true,第二个参数将返回一个数组,而不是\ stdClass类型的对象。

请参见以下示例:

https://3v4l.org/GM5fR