代码之家  ›  专栏  ›  技术社区  ›  Josh

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

  •  0
  • Josh  · 技术社区  · 5 年前

    我将以下内容发送到我正在处理的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中的项,但是$levels返回为空

    如果可以,请引导

    1 回复  |  直到 5 年前
        1
  •  1
  •   MLestuzzi    5 年前

    只有在使用javascript生成json时才阅读此解决方案:

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

    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\u decode(…,true)对其进行解码。

        2
  •  0
  •   ln -s    5 年前

    您的密钥没有正确引用,这是json\u decode所期望的格式,这就是您得到null的原因。为了迭代这些项,最好使用json\u decode($jsonString,true);注意第二个参数设置为true,第二个参数将返回一个数组而不是\stdClass类型的对象。

    https://3v4l.org/GM5fR

    推荐文章