zoukankan      html  css  js  c++  java
  • php json_encode()函数返回对象和数组问题

    php json_encode() 函数格式化数据时会根据不同的数组类型格式化不同类型的json数据

      索引数组时

    <?php
    $arr = [1,2,3,4,5];
    print_r(json_encode($arr));
    //输出 [1,2,3,4,5]

      关联数组时

    <?php
    $arr = [
        "name"=>"Bob",
        "job"=>"IT"
    ];
    print_r(json_encode($arr));
    //输出  {"name":"Bob","job":"IT"}

      空数组

    <?php
    $arr = [];
    print_r(json_encode($arr));
    //输出 []

    索引数组时生成的是数组类型数据,关联数组时生成的是对象类型的数据,空数组返回的是数组类型。但是当碰到同一个字段返回的数组可能是关联数组也可能是空数组时,就会在app端出现数据类型不一致的问题,解决方式有两种:

    一,使用 json_encode的 JSON_FORCE_OBJECT 模式

    <?php
    $arr = [];
    print_r(json_encode($arr,JSON_FORCE_OBJECT));
    //输出 {}

    但是这种存在一个问题,它会把所有的数据都以对象的方式返回,包括索引数组:

    <?php
    $arr = [1,2,3,4,5,6];
    print_r(json_encode($arr,JSON_FORCE_OBJECT));
    //输出  {"0":1,"1":2,"2":3,"3":4,"4":5,"5":6}

    二,定义空数据时使用 ArrayObject 定义而不适用  Array() 或者  [] 

    <?php
    $arr = new ArrayObject();
    print_r(json_encode($arr));
    //输出 {}

    到这里我们可以随意的控制返回的json数据中数据的类型啦!!!!

  • 相关阅读:
    B1295 [SCOI2009]最长距离 最短路
    B1588 [HNOI2002]营业额统计 set||平衡树
    B1202 [HNOI2005]狡猾的商人 并查集
    B1303 [CQOI2009] 中位数图 数学
    B2002 [Hnoi2010]Bounce 弹飞绵羊 分块
    B1192 [HNOI2006]超级英雄Hero 二分图匹配
    逐个击破
    HAOI2009 毛毛虫
    HNOI/AHOI2018 道路
    NOI2005 瑰丽华尔兹
  • 原文地址:https://www.cnblogs.com/itsuibi/p/11433231.html
Copyright © 2011-2022 走看看