• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

php对象和数组的相互转换(还是可以去找没有没php的高阶课程看看看)(要不别人分析一 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

php对象和数组的相互转换(还是可以去找没有没php的高阶课程看看看)(要不别人分析一下重点要点,要不自己来,不然 效果真的不好)

一、总结

都是自己实现的函数

算法:

1、先判断类型,gettype
2、类型正确的才要,要么数组,要么对象
3、递归调用
4、强转成对象

 

二、php对象和数组的相互转换

数组是PHP的灵魂,非常强大,但有时候面向对象编程也是挺方便的,数组 与 对象 之间切换也是常有的事:

 1 /**
 2  * 数组 转 对象
 3  *
 4  * @param array $arr 数组
 5  * @return object
 6  */
 7 function array_to_object($arr) {
 8     if (gettype($arr) != \'array\') { //1、先判断类型,gettype
 9         return;
10     }
11     foreach ($arr as $k => $v) {
12         if (gettype($v) == \'array\' || getType($v) == \'object\') { //2、类型正确的才要,要么数组,要么对象
13             $arr[$k] = (object)array_to_object($v); //3、递归调用  4、强转成对象
14         }
15     }
16  
17     return (object)$arr;
18 }
19  
20 /**
21  * 对象 转 数组
22  *
23  * @param object $obj 对象
24  * @return array
25  */
26 function object_to_array($obj) {
27     $obj = (array)$obj;
28     foreach ($obj as $k => $v) {
29         if (gettype($v) == \'resource\') { //1、资源类型的不要
30             return;
31         }
32         if (gettype($v) == \'object\' || gettype($v) == \'array\') { //2、对象的类型是\'object\'
33             $obj[$k] = (array)object_to_array($v);
34         }
35     }
36  
37     return $obj;
38 }

 

 

三、PHP中把对象转数组的几个方法:

 1 1.
 2 //PHP stdClass Object转array  
 3 function object_array($array) {  
 4     if(is_object($array)) {  
 5         $array = (array)$array;  
 6     } 
 7     if(is_array($array)) {
 8         foreach($array as $key=>$value) {  
 9             $array[$key] = object_array($value);  
10         }  
11     }  
12     return $array;  
13 }
14 2.
15 $array = json_decode(json_encode(simplexml_load_string($xmlString)),TRUE);
16 3.
17 function object2array_pre(&$object) {
18     if (is_object($object)) {
19         $arr = (array)($object);
20     } else {
21         $arr = &$object;
22     }
23     if (is_array($arr)) {
24         foreach($arr as $varName => $varValue){
25             $arr[$varName] = $this->object2array($varValue);
26         }
27     }
28     return $arr;
29 }
30 4.如果是10W的数据量的话,执行要进1s,结构再复杂些,可以达到3s,性能太差了,可以用以下替换:
31 function object2array(&$object) {
32     $object =  json_decode( json_encode( $object),true);
33     return  $object;
34 }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap