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

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

 1     /**
 2      * 将对象转化为数组
 3      */
 4     private function objectToArray($obj)
 5     {
 6         $_arr = is_object($obj) ? get_object_vars($obj) : $obj;
 7         $arr =array();
 8         foreach ($_arr as $key => $val) {
 9             $val = (is_array($val) || is_object($val)) ? $this->objectToArray($val) : $val;
10             $arr[$key] = $val;
11         }
12
13         return   $arr;
14     }

后来发现,接口返回的结果类型并不是对象,而是自己经过json编码,解码后,将数组转化为了对象。真是天坑啊~

一般情况下,json_decode返回对象,但是这里可以把它强制转化为数组。

json_decode($var,true).就是这样了

这篇文章不错,介绍了一些细节:
    http://www.jb51.net/article/30489.htm  php中json_decode()和json_encode()的使用方法

时间: 2024-10-13 12:56:20

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

ThinkPHP5——模型查询返回的对象转换为数组

使用模型查询的返回的结果集为对象,其中里面的数据,TP5框架会自动对里面的data:protected该项进行处理. 但有时我们就想要数据,就想返回一个数组就可以了,怎么办?有两种方法可以实现: 方法一:找到TP5框架中的database.php文件,该文件中找到 resultset_type 该项,将后面的 array 改成 \think\Collection [注意大小写] // 数据集返回类型 'resultset_type' => 'array',  改为 // 数据集返回类型 'res

一个简单xml数据转换为数组的方法

本人用easywechat做微信回复图文,从数据库中拿到的数据直接是xml拼好的数据,但是框架只有自带的获取xml格式的语句,所有需要将xml数据中所需要的数据拿出来用来拼接. 搜了好多资料说的都很麻烦.ps:可能是我水平不够;-) ok,废话不多说, 上代码: // 以这个xml数据串为例 $xml = "<item><Title><![CDATA[亲爱的顾客:]]></Title><Content><![CDATA[]]>

对象转数组

public function object_to_array(&$object){ //对象转数组 $object=json_decode(json_encode($object),true); return $object; }

ES6 常用总结——第三章(数组、函数、对象的扩展)

1.1. Array.from() Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map). 下面是一个类似数组的对象,Array.from将它转为真正的数组. let arrayLike = { '0': 'a', '1': 'b', '2': 'c', length: 3}; // ES5的写法var arr1 = [].slice.call(arrayLike);

JS基础-语法+流程控制语句+函数+内置对象【数组】

JS语法: Javascript基本数据类型:undefined/null/Boolean/number/string 复杂数据类型:object typeof用来检测变量的数据类型 typeof的使用方法有两种: (1)typeof 变量 (2) typeof(变量) undefined派生自null,所以undefined==null返回的结果是true 用于任何数据类型,Number()可以将非数值转化为数值,但是有一些数据是不能转化为数值的,如果这类数据通过Number()进行强制转化的

目录文件处理函数之dir函数-将目录名转换为对象

Dir函数-将目录名转换为对象 Dir函数可将目录名转换为一个对象并返回.返回的对象可以调用2个属性和3个方法. 可调用的属性和方法如表所示: 属性和方法 说明 属性和方法 说明 Handle属性 返回目录标识 Rewind()方法 复位目录标识 Path属性 返回打开目录的路径 Close()方法 关闭目录 Read()方法 读取目录 [示例]应用dir()函数获取目录标识.路径及该目录下所有子目录及文件的名称. <?PHP $dir = dir("c:/windows");

一个类数组对象转换为一个真正的数组

上来就是暴力结论,可先看案例: (1)该类数组对象必须具有length属性,用于指定数组的长度.如果没有length属性,那么转换后的数组是一个空数组.      (2)该类数组对象的属性名必须为数值型或字符串型的数字(该类数组对象的属性名可以加引号,也可以不加引号) 举个例子: let array = { 0: 'name', 1: 'age', 2: 'sex', //注意这些属性名的类型 是数值型 3: ['user1','user2','user3'], 'length': 4 //注意

Array.from将类对象转换为真正数组

这次给大家分享一个es6方法,将类对象转换为真正的数组,更方便操作数据 下面开始代码展示: let arrayLike = { '0':'a', '1':'b', '2':'c', length:3 }; //ES5的写法 var arr1 = [].slice.call(arrayLike);//['a','b','c'] //ES6的写法 var arr2 = Array.from(arrayLike);//['a','b','c'] Array.from('hello') //['h','

PHP 对象和数组互相转换

最简单的:$array = (array)$object; 但是, 如果对象的属性也是个对象的话, 就转换不了了, 就是说PHP的强制类型转换不能把对象属性中的对象转换成数组的下一个维度的数组, 刚刚找了手册说hw_objrec2array这个函数可以, 但是我用了提示 undefined, 然后就自己写了个如下: function ob2ar($obj) { if(is_object($obj)) { $obj = (array)$obj; $obj = ob2ar($obj); } else