php json数据返回数组吗,php json_encode()函数返回对象和数组问题

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

索引数组时

$arr = [1,2,3,4,5];

print_r(json_encode($arr));

//输出 [1,2,3,4,5]

关联数组时

$arr = [

"name"=>"Bob",

"job"=>"IT"

];

print_r(json_encode($arr));

//输出 {"name":"Bob","job":"IT"}

空数组

$arr = [];

print_r(json_encode($arr));

//输出 []

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

一,使用 json_encode的 JSON_FORCE_OBJECT 模式

$arr = [];

print_r(json_encode($arr,JSON_FORCE_OBJECT));

//输出 {}

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

$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() 或者  []

$arr = new ArrayObject();

print_r(json_encode($arr));

//输出 {}

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

php函数将对象转换为数组以及json_decode的使用技巧

在写php代码的时候,发现调用接口返回的结果类型是对象,不是自己想要的数组,于是乎,写了一个将对象转化数组的函数: /** * 将对象转化为数组 */ private function objectT ...

JavaScript函数、对象和数组

一.JavaScript函数 1.定义函数:函数的通用语法如下 function function_name([parameter [, ...]]) { statements; } 由关键字func ...

oracle 用函数返回对象集合

1.先要声明全局type:并且,字段变量类型要为object,不能为record: (1)CREATE OR REPLACE TYPE "DDD_BY_DEPT_STATISTISC&quo ...

JavaScript笔记02——基本语法(包括函数、对象、数组等)

Doing Math & Logic Conditional & Looping Functions Objects Arrays Doing Math & Logic 1.J ...

C++ 函数返回对象时并没有调用拷贝构造函数

#include #include #include using namespace std; cla ...

c语言 函数返回二位数组 函数参数为二维数组

通过typedef可以简单实现.也可以直接写. 写了两个简单的矩阵操作的函数简单示例. #include #include const ...

html5降龙十八掌-函数,对象,数组的练习

PHP的json_encode()函数与JSON对象

一.问题描述 这周搬砖的时候,前端通过ajax获取后端的数据后,照例用 对象.属性 的方式取值,然而结果总是总是不能如预期般展示在页面上. 先写个 demo 还原下场景:选中一个下拉框列表选项后,会在 ...

php数组使用json_encode函数中文被编码成null的原因和解决办法

大写的囧,提客户处理问题,前端的APP一直在叽叽咂咂,说收到的值是null,弄了半天原来是这个问题,记录下吧 json格式在开发中用的十分广泛.在php中json_encode函数可以直接将数组转成 ...

随机推荐

jQuery中的$.extend方法来扩展JSON对象及合并,方便调用对象方法

$.extend方法可以扩展JSON对象,用一个或多个其他对象来扩展一个对象,返回被扩展的对象. 例一 合并 settings 和 options,修改并返回 settings var setting ...

js实现『加载更多』功能实例

DEMO : 滚动加载示例 关于如何实现『加载更多』功能,网上有插件可用,例如比较著名的使用iscroll.js实现的上拉加载更多.下拉刷新功能. 但实际用起来却是很麻烦.由于是第三方插件,要按照对方 ...

UA模拟

安卓QQ内置浏览器UA: Mozilla/5.0 (Linux; Android 5.0; SM-N9100 Build/LRX21V) AppleWebKit/537.36 (KHTML, like ...

DBParameter比拼接字符串慢的解决办法

List param = new List(){       new DBParameter("@Question ...

thinkphp 找数据库某个字段为空的数据,PHP 数据调取 空数据

$arr['dingwei'] = array('EXP','is null');

diff 命令详解

[自注:] 1,还有个colordiff命令,用颜色标识不同的地方.需要先安装 2,diff normal模式中 2,5表示从第二行到第五行 3,diff -c 模式中,2,5表示从第二行到第五行 4 ...

iOS 开发笔记-加载/初始化

ViewDidLoad 一般我们会在这里做界面上的初始化操作,比如往view中添加一些子视图.从数据库或者网络加载模型数据装配到子视图中 在自定义控制里 initWithFrame:一般用于添加控件, ...

oracle银行卡卡号计算函数

create or replace function GetCardNoBySerialNo(v_sysacc varchar2,v_position number) return varchar2 ...

VS 插件 Productivity Power Tools - 更改 选项卡组件位置

Visual Studio 2013怎么把选项卡设置在左侧显示?vs中选项卡默认显示在顶部,但是更习惯显示在左侧,该怎么设置呢?为了更方便使用,下面分享VS2013选项卡设置在左侧显示的图文教程 Vi ...

python 获取自身ip

原文 见过很多获取服务器本地IP的代码,个人觉得都不是很好,例如以下这些 不推荐:靠猜测去获取本地IP方法 #!/usr/bin/env python # -*- coding: utf-8 -*- ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值