數組是PHP的靈魂,非常強大,但有時候面向對象編程也是挺方便的,數組 與 對象 之間切換也是常有的事:
例子一:
- /**
- * 數組 轉 對象
- *
- * @param array $arr 數組
- * @return object
- */
- function array_to_object($arr)
- {
- if (gettype($arr) != 'array')
- {
- return;
- }
- foreach ($arr as $k => $v)
- {
- if (gettype($v) == 'array' || getType($v) == 'object')
- {
- $arr[$k] = (object)array_to_object($v);
- }
- }
- return (object)$arr;
- }
- /**
- * 對象 轉 數組
- *
- * @param object $obj 對象
- * @return array
- */
- function object_to_array($obj)
- {
- $obj = (array)$obj;
- foreach ($obj as $k => $v)
- {
- if (gettype($v) == 'resource')
- {
- return;
- }
- if (gettype($v) == 'object' || gettype($v) == 'array')
- {
- $obj[$k] = (array)object_to_array($v);
- }
- }
- //Vevb.com
- return $obj;
- }
例子2:
- <?php
- class Test{
- public $a;
- public $b;
- public function __construct($a) {
- $this->a = $a;
- }
- }
- //對象轉數組,使用get_object_vars返回對象屬性組成的數組
- function objectToArray($obj){
- $arr = is_object($obj) ? get_object_vars($obj) : $obj;
- if(is_array($arr)){
- return array_map(__FUNCTION__, $arr);
- }else{
- return $arr;
- }
- }
- //數組轉對象
- function arrayToObject($arr){
- if(is_array($arr)){
- return (object) array_map(__FUNCTION__, $arr);
- }else{
- return $arr;
- }
- }
- $test = new Test('test1');
- $test->b = new Test('test2');
- print_r($test);
- $array = objectToArray($test);
- print_r($array);
- $object = arrayToObject($array);
- print_r($object);
新聞熱點
疑難解答