php對象和數組的相互轉換(仍是能夠去找沒有沒php的高階課程看看看)(要不別人分析一下重點要點,要不本身來,否則 效果然的很差)

php對象和數組的相互轉換(仍是能夠去找沒有沒php的高階課程看看看)(要不別人分析一下重點要點,要不本身來,否則 效果然的很差)

1、總結

都是本身實現的函數php

算法:算法

一、先判斷類型,gettype
二、類型正確的纔要,要麼數組,要麼對象
三、遞歸調用
四、強轉成對象

 

2、php對象和數組的相互轉換

數組是PHP的靈魂,很是強大,但有時候面向對象編程也是挺方便的,數組 與 對象 之間切換也是常有的事:編程

 1 /**
 2  * 數組 轉 對象
 3  *
 4  * @param array $arr 數組
 5  * @return object
 6  */
 7 function array_to_object($arr) {
 8     if (gettype($arr) != 'array') { //一、先判斷類型,gettype  9         return;
10     }
11     foreach ($arr as $k => $v) {
12         if (gettype($v) == 'array' || getType($v) == 'object') { //二、類型正確的纔要,要麼數組,要麼對象 13             $arr[$k] = (object)array_to_object($v); //三、遞歸調用 四、強轉成對象 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') { //一、資源類型的不要 30             return;
31         }
32         if (gettype($v) == 'object' || gettype($v) == 'array') { //二、對象的類型是'object' 33             $obj[$k] = (array)object_to_array($v); 34         }
35     }
36  
37     return $obj;
38 }

 

 

3、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 }
相關文章
相關標籤/搜索