• 技术文章 >后端开发 >PHP问题

    php空数组怎么转json对象

    藏色散人藏色散人2021-04-02 18:42:31原创152

    php空数组转json对象的方法:1、使用“JSON_FORCE_OBJECT”转json对象;2、使用数据类型转换将空数组转json对象;3、使用ArrayObject将空数组转json对象。

    本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑

    PHP json_encode转换空数组为对象

    问题描述:

    php在给端提供接口,比如PC和安卓,ios等,如果返回json格式的数据,当返回数据的为数组,且key为字符串时,json化后将返回jsonObject,但是如果是空数组,有可能返回的就是jsonArray,数据结构不一致导致端解析json失败。

    如:

    $arr  = [
         'id'  => 123.,
         'name'  =>  'andrew' ,
    ];
     
    $jsonRet  = json_encode( $arr );
     
    print_r( $jsonRet );

    输出:

    {
      "id": 123,
      "name": "andrew"
    }

    但是如果是:

    $arr = [];
    $jsonRet = json_encode($arr);
    print_r($jsonRet);

    输出:

    [
      
    ]

    如何在数组为空时也是JsonObject呢?

    方法一:

    使用JSON_FORCE_OBJECT

    $arr = [];
    $jsonRet = json_encode($arr, JSON_FORCE_OBJECT);
    print_r($jsonRet);

    此法有一弊端,eg:

    $arr = [
        'jsonArray' => [
            '21', '12', '13'
        ],
        'jsonObject' => []
    ];
    $jsonRet = json_encode($arr,JSON_FORCE_OBJECT);
    print_r($jsonRet);

    输出:

    {
      "jsonArray": {
        "0": "21",
        "1": "12",
        "2": "13"
      },
      "jsonObject": {
        
      }
    }

    原本jsonArray的也被jsonObject化了,局部的改变不能影响全局

    方法二

    使用数据类型转换

    $bar = array();  
    $foo = (object)$bar;  
    echo json_encode($foo);

    方法三(推荐)

    使用 ArrayObject

    $arr = [
        'jsonArray' => [
            '21', '12', '13'
        ],
        'jsonObject' => new \ArrayObject()
    ];
    $jsonRet = json_encode($arr);
    print_r($jsonRet);

    输出:

    {
      "jsonArray": [
        "21",
        "12",
        "13"
      ],
      "jsonObject": {
        
      }
    }

    【推荐学习:PHP视频教程

    以上就是php空数组怎么转json对象的详细内容,更多请关注php中文网其它相关文章!

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php
    上一篇:php怎么去除html代码 下一篇:php如何将字符串转utf8格式
    第15期线上培训班

    相关文章推荐

    • php怎么判断某值在不在数组中• php怎么删除数组指定键名• php数组怎么转编码• php数组操作方法有哪些

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网