PHP 对象、数组间的转换

  1.   
  2. // 1. 利用(array)和(object),简单处理  
  3. $objTemp = (object)array();  
  4. $objTemp->a = 1;  
  5. $objTemp->b = 2;  
  6. $objTemp->c = 3;  
  7. $arrTemp = (array)$objTemp;  
  8. print_r($objTemp);  
  9. print_r($arrTemp);  
  10.   
  11.  /** 
  12. stdClass Object 
  13.     [a] => 1 
  14.     [b] => 2 
  15.     [c] => 3 
  16. Array 
  17.     [a] => 1 
  18.     [b] => 2 
  19.     [c] => 3 
  20. **/  
  21.   
  22. // PS:简单的(array)和(object)只能处理单层的数据,对于多层的数组和对象转换则无能为力。  
  23.   
  24. // 2. 多维数组与对象间的转换处理  
  25.   
  26. /** 
  27.  * 将对象转换为多维数组 
  28.  * 
  29.  **/  
  30. function objectToArray($d) {  
  31.     if (is_object($d)) {  
  32.         // Gets the properties of the given object  
  33.         // with get_object_vars function  
  34.         $d = get_object_vars($d);  
  35.     }  
  36.   
  37.     if (is_array($d)) {  
  38.         /* 
  39.         * Return array converted to object 
  40.         * Using __FUNCTION__ (Magic constant) 
  41.         * for recursive call 
  42.         */  
  43.         return array_map(__FUNCTION__, $d);  
  44.     }  
  45.     else {  
  46.         // Return array  
  47.         return $d;  
  48.     }  
  49. }  
  50.    
  51. /** 
  52.  * 将多维数组转换为对象 
  53.  * 
  54.  **/  
  55. function arrayToObject($d) {  
  56.     if (is_array($d)) {  
  57.         /* 
  58.         * Return array converted to object 
  59.         * Using __FUNCTION__ (Magic constant) 
  60.         * for recursive call 
  61.         */  
  62.         return (object) array_map(__FUNCTION__, $d);  
  63.     }  
  64.     else {  
  65.         // Return object  
  66.         return $d;  
  67.     }  
  68. }  
  69.   
  70. // Useage:    
  71. $init = new stdClass;  
  72. $init->foo = "Test data";  
  73. $init->bar = new stdClass;  
  74. $init->bar->baaz = "Testing";  
  75. $init->bar->fooz = new stdClass;  
  76. $init->bar->fooz->baz = "Testing again";  
  77. $init->foox = "Just test";  
  78.   
  79. // Convert array to object and then object back to array  
  80. $array = objectToArray($init);  
  81. $object = arrayToObject($array);  
  82.   
  83. // Print objects and array  
  84. print_r($init);  
  85. print_r($array);  
  86. print_r($object);  
  87.   
  88.  /** 
  89. stdClass Object 
  90.     [foo] => Test data 
  91.     [bar] => stdClass Object 
  92.         ( 
  93.             [baaz] => Testing 
  94.             [fooz] => stdClass Object 
  95.                 ( 
  96.                     [baz] => Testing again 
  97.                 ) 
  98.         ) 
  99.     [foox] => Just test 
  100. Array 
  101.     [foo] => Test data 
  102.     [bar] => Array 
  103.         ( 
  104.             [baaz] => Testing 
  105.             [fooz] => Array 
  106.                 ( 
  107.                     [baz] => Testing again 
  108.                 ) 
  109.         ) 
  110.     [foox] => Just test 
  111. stdClass Object 
  112.     [foo] => Test data 
  113.     [bar] => stdClass Object 
  114.         ( 
  115.             [baaz] => Testing 
  116.             [fooz] => stdClass Object 
  117.                 ( 
  118.                     [baz] => Testing again 
  119.                 ) 
  120.         ) 
  121.     [foox] => Just test 
  122. **/  
posted @ 2020-10-29 15:01  不积跬步无至千里  阅读(154)  评论(0)    收藏  举报