(实用篇)PHP JSON数组与对象的理解

 

在PHP后端和客户端数据交互的过程中,JSON数据中有时格式不定,一会儿是数组,一会儿是对象,弄得客户端开发人员要崩溃的感觉。

因此,前后端相关人员先对PHP的json_encode函数原理有必要的了解是最重要的一个环节。

PHP中的array是个万能的数据结构,并不像其它语言根据需要的场景会定义很多约束性的数据类型来描述结构,所以PHP程序员是很难给客户端人员讲清楚返回的是什么结构的数据的。

也就变成明明是通过PHP的数组数据编码成json的,但输出值有时是数组、有时是对象的情况。

<?php
/*
如果你想生成一个json格式的数组格式(Vector)而非对象格式(Map)的,
那么数据的下标:
必须是数字索引,
必须从0开始,
必须从小到大依次增加、中间不可以跳跃、顺序不可变动.
*/

//符合数组
$vector = [
    12, 23, 18
];
echo json_encode($vector);

//符合数组
$vector2 = [
    0 => 12, 1 => 23, 2 => 18
];
echo json_encode($vector2);

//不符合数组,下标有跳跃
$map = [
    0 => 12, 1 => 23, 2 => 18, 4 => 20
];
echo json_encode($map);

//不符合数组,下标顺序不对
$map = [
    0 => 12, 1 => 23, 3 => 18, 2 => 20
];
echo json_encode($map);

//不符合数组,下标没有从0开始
$map_1 = [
    1 => '111', 2 => 'asdfa'
];
echo json_encode($map_1);

//典型的对象格式
$map_2 = ['abc' => 1, 'de' => 2, 'fi' => null];
echo json_encode($map_2);

/**
 * 请注意上面的变量命名,对应于Hack中的概念,Vector和Map为两种数据
   集合类型
 * 如果你需要将"索引数组"强制转化成"对象",可以这样写
 * json_encode((object) $a);
 * 或
 * json_encode ($a, JSON_FORCE_OBJECT);
 *
 */

解决方案是什么呢?

就是通过PHP封装Vector和Map这两种数据结构的类,在构造json输出结构时,以这两种类型做封装和转换,来确保结构的确定性。

至少,先要建立这样的类型概念。

20121022133013274394

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/1436.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
重蔚的头像重蔚管理团队
上一篇 2016年10月26日 08:34
下一篇 2016年10月27日 08:59

相关推荐

  • PHP实现Oracle数据库集群的方法。

    在当前的互联网时代下,高可用性的需求变得越来越大。而数据库作为企业数据的核心,需要满足在面临各种异常情况时依然保持业务的正常运行。因此,数据库集群成为了当前较为流行的实现高可用性解决方案之一。本文将…

    2023年5月21日
    00
  • 详解PHP底层运行机制与工作原理

    最近搭建服务器,突然感觉lamp之间到底是怎么工作的,或者是怎么联系起来?平时只是写程序,重来没有思考过他们之间的工作原理: PHP底层工作原理 图1 php结构 从图上可以看出,php从下到上是一个4层体系 ①Zend引擎…

    2022年6月14日 PHP自学教程
    0121
  • PHP编写数据交互程序的步骤。

    随着大数据时代的到来,数据交互变得愈发重要。PHP是一种广泛使用的脚本语言,可以用于处理和交互各种类型的数据。本文将介绍PHP编写数据交互程序的步骤。 配置环境 在编写PHP数据交互程序前,需要先配置好用于存储…

    2023年5月21日
    05
  • (实用篇)PHPExcel读取Excel文件的实现代码

    用PHPExcel读取Excel 2007 或者Excel2003文件,需要的朋友,可以参考下。 涉及知识点: php对excel文件进行循环读取 php对字符进行ascii编码转化,将字符转为十进制数 php对excel日期格式读取,并进行显示转化 php…

    2016年10月21日
    0272
  • 详解php版阿里云OSS图片上传类

    本文实例讲述了php版阿里云OSS图片上传类。分享给大家供大家参考,具体如下: 【

    2022年6月17日
    0205
  • PHP入门指南:PHP和Flink。

    PHP是一种流行的开源服务器端脚本语言,建议初学者通过学习PHP入门指南,来了解PHP和Flink之间的关联。 PHP是一种脚本语言,专门用于Web开发。它常用于动态的网页编程,但也可以在命令行方法进行编写。此外,开发人…

    2023年5月23日
    06
  • PHP如何在两个大文件中找出相同的记录?

    给定a,b两个文件, 分别有x,y行数据, 其中(x, y均大于10亿), 机器内存限制100M,该如何找出其中相同的记录?思路处理该问题的困难主要是无法将这海量数据一次性读内内存中.一次性读不进内存中,那么是否可以考虑多…

    2023年3月29日
    00
  • 说说php拆分字符串。

    在PHP中,我们可以使用内置的字符串函数来拆分字符串,这些函数包括`str_split()`、`explode()`和`split()`,每种函数都有其特定的用途和优点,选择哪种函数取决于你的具体需求。 1. `str_split()`:这个函数将字符…

    2024年6月20日
    00

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息