专栏首页PHP修行之路php json_encode()函数返回对象和数组问题

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数据中数据的类型啦!!!!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • nginx分割日志

    1.在没有执行kill -USR1 nginx_pid 之前,即便已经对文件执行了mv命令也只是改变了文件的名称,nginx还是会向新命名的文件中照常写入日志数...

    码缘
  • php 求两个数组的差集应该注意的事情

    对于 phper 来说 array_diff 这个函数应该知道它的用途,获取两个数组的差集,我理解中的差集是这样的

    码缘
  • 【算法】php实现排序(一)

    选择排序 方式:先让第一位与其他位比较大小找到最小的数字,然后是第二位与除第一位的其他位比较大小找出第二位,依此类推

    码缘
  • PHP 扩展管理

    一直对 PHP 扩展了解的似是而非,每次安装扩展都要百度教程,很容易出现各种错误。所幸整理下管理扩展的所有操作,方便日后操作。

    北国风光
  • python开发_json_一种轻量级的数据交换格式

    ==================================================

    Hongten
  • python开发_json_一种轻量级的数据交换格式

    ==================================================

    bear_fish
  • 集成环境phpstudy后门利用复现

    phpStudy是一个PHP调试环境的程序集成包。该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安...

    用户1631416
  • 集成环境phpstudy后门利用复现

    phpStudy是一个PHP调试环境的程序集成包。该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安...

    7089bAt@PowerLi
  • 用分布式存储实现Harbor Registry的高可用方案

    不久前,VMware发布了Docker容器数据卷的驱动(Docker Volume Driver for vSphere)1.0 beta版本,使得Docker...

    Henry Zhang
  • 自定义kafka streams的processor

    本文来解析一下kafka streams的KStreamBuilder以及举例如何自定义kafka streams的processor

    codecraft

扫码关注云+社区

领取腾讯云代金券