php 强制转为数组,php怎么将对象强制转数组

编程入门 行业动态 更新时间:2024-10-20 18:49:26

php 强制转为<a href=https://www.elefans.com/category/jswz/34/1771288.html style=数组,php怎么将对象强制转数组"/>

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的性能也值得疑虑。

下面上代码:

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怎么将对象强制转数组

本文发布于:2024-02-06 18:49:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1750717.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   转数   对象   php

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!