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

    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 }
  • 相关阅读:
    『水晶报表』实现打印
    C#水晶报表教程
    C#
    C# 跨线程调用控件
    SQL中DateTime转换成Varchar样式
    解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的方法
    配置JAVA的环境变量
    lucene3.0_IndexSearcher排序
    tomcat如何配置环境变量
    无法启动DISTRIBUTED TRANSACTION COORDINATOR解决方法
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9038835.html
Copyright © 2011-2022 走看看