php 强制输出数组,php怎么将对象强制转数组
php将对象强制转数组的方法:1、通过定义的“object_array”方法转换;2、通过“json_decode”方法转换;3、通过定义的“object2array_pre”方法转换。
本文操作环境:windows7系统、PHP7.1版,DELL G3电脑
php的对象转数组
1.//PHP stdClass Object转array
function object_array($array) {
if(is_object($array)) {
$array = (array)$array;
}
if(is_array($array)) {
foreach($array as $key=>$value) {
$array[$key] = object_array($value);
}
}
return $array;
}
2.$array = json_decode(json_encode(simplexml_load_string($xmlString)),TRUE);
3.function object2array_pre(&$object) {
if (is_object($object)) {
$arr = (array)($object);
} else {
$arr = &$object;
}
if (is_array($arr)) {
foreach($arr as $varName => $varValue){
$arr[$varName] = $this->object2array($varValue);
}
}
return $arr;
}
4.如果是10W的数据量的话,执行要进1s,结构再复杂些,可以达到3s,性能太差了,可以用以下替换:function object2array(&$object) {
$object = json_decode( json_encode( $object),true);
return $object;
}
json_decode(json_encode($array),true)
多层数组和对象转化的用途很简单,便于处理WebService中多层数组和对象的转化【推荐学习:《PHP视频教程》】
简单的(array)和(object)只能处理单层的数据,对于多层的数组和对象转换则无能为力。
通过json_decode(json_encode($object)可以将对象一次性转换为数组,但是object中遇到非utf-8编码的非ascii字符则会出现问题,比如gbk的中文,何况json_encode和decode的性能也值得疑虑。
下面上代码:<?php
function objectToArray($d) {
if (is_object($d)) {
// Gets the properties of the given object
// with get_object_vars function
$d = get_object_vars($d);
}
if (is_array($d)) {
/*
* Return array converted to object
* Using __FUNCTION__ (Magic constant)
* for recursive call
*/
return array_map(__FUNCTION__, $d);
}
else {
// Return array
return $d;
}
}
function arrayToObject($d) {
if (is_array($d)) {
/*
* Return array converted to object
* Using __FUNCTION__ (Magic constant)
* for recursive call
*/
return (object) array_map(__FUNCTION__, $d);
}
else {
// Return object
return $d;
}
}
// Useage:
// Create new stdClass Object
$init = new stdClass;
// Add some test data
$init->foo = "Test data";
$init->bar = new stdClass;
$init->bar->baaz = "Testing";
$init->bar->fooz = new stdClass;
$init->bar->fooz->baz = "Testing again";
$init->foox = "Just test";
// Convert array to object and then object back to array
$array = objectToArray($init);
$object = arrayToObject($array);
// Print objects and array
print_r($init);
echo "\n";
print_r($array);
echo "\n";
print_r($object);
?>
php 强制输出数组,php怎么将对象强制转数组相关推荐
- php7对象转换成数组,php 如何把对象转换成数组对象
php把对象转换成数组对象的方法:首先打开相应的PHP代码文件:然后通过"function array_to_object($arr){...}"方法把对象转换成数组即可. 本文操 ...
- html 判断是否在 数组,javascript如何判断对象是否是数组?
JavaScript变量能够保存多种数据类型:数值.字符串值.数组.对象等等,有时我们需要知道变量中所存储的数据类型,我们该如何判断数据类型呢? 就算变量定义的是数组格式,typeof返回的数据类型还 ...
- java把对象放入数组_如何将对象添加到数组
使用Array.push()将任何东西放入数组. var a=[], b={}; a.push(b); // a[0] === b; 有关数组的更多信息 一次添加多个项目 var x = ['a']; ...
- ts定义数组类型_TS的对象类型、数组类型、函数类型
对象类型 基础使用 在 TypeScript 中,我们使用接口(Interfaces)来定义对象的类型. 简单例子: interface Person { name: string; age: num ...
- 删除数组中某个指定元素或删除数组中某个对象元素
ES6--删除数组中某个指定元素或删除数组中某个对象 1.删除数组中某个指定元素 2.删除数组中的某个对象 1.删除数组中某个指定元素 let index = this.array.indexOf(n ...
- arr数组怎么取值_JS 面试之数组的几个不 low 操作
前言 本文主要从应用来讲数组api的一些骚操作,如一行代码扁平化n维数组.数组去重.求数组最大值.数组求和.排序.对象和数组的转化等. 上面这些应用场景你可以用一行代码实现吗? 1.扁平化n维数组 1 ...
- Java常用知识点汇总(基础:数组,类与对象,接口与继承)
目录 数组 1.引用 2.增强型for循环 3.复制数组 arraycopy() 4.针对数组的工具类 Arrays 5.选择法排序 6.冒泡排序 7.练习-二维数组中的查找(剑指offer) 类与对 ...
- java数组是不是对象_java的数组是对象吗
数组是对象哦.数组的父类也是Object,每个数组都实现了接口Cloneable and java.io.Serializable.java中数组的创建使用了关键字new,虽然格式和普通的类创建的方式 ...
- 当 Vue 处理数组与处理纯对象的方式一样
处理数组方法的弊端 Vue 在响应式的处理中,对数组与对象采用了不同的方式,如下源码所示: if (Array.isArray(value)) {const augment = hasProto? p ...
最新文章
- C语言回溯算法解决N皇后问题
- ThreadLocal使用
- webalizer日志分析软件的安装
- 浅谈机房常遇问题及解决方案
- 浅谈PHP面向对象编程(九)
- 渝粤教育 陕西师范大学 《初级微观经济学》作业
- python网站模板下载_Python画图模板大全:从此画图不用愁
- 轴固定位置_何为轴?来看看你对轴了解了么
- 解决js动态改变dom元素属性后页面及时渲染问题
- 【情感分析】情感分析研究的新视野
- Atitti.java android反编译解决方案-----虚拟机方案
- 《wireshark》怎么抓包
- 策略盈亏分布统计——从零到实盘11
- java深克隆 浅克隆_通过Java中深克隆与浅克隆来理解克隆
- winsxs是什么文件夹 Winsxs文件夹可以删除吗
- 图像处理那张熟悉的面孔——Lena
- 中航重机 600765
- 将Maven仓库地址修改为阿里云的仓库地址
- rosdep update 使用小鱼fishros解决ros1/ros2问题 2022
- 满足条件的数累加(YZOJ-1066)