继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

PHP 对象、数组间的转换

沧海一幻觉
关注TA
已关注
手记 346
粉丝 34
获赞 198

/** 

 * PHP 对象、数组间的转换 

 * 

 * @author flyer0126 

 * @since 2012/05/03 

 **/  

   

// 1. 利用(array)和(object),简单处理  

$objTemp = (object)array();  

$objTemp->a = 1;  

$objTemp->b = 2;  

$objTemp->c = 3;  

$arrTemp = (array)$objTemp;  

print_r($objTemp);  

print_r($arrTemp);  

   

 /** 

stdClass Object 

    [a] => 1 

    [b] => 2 

    [c] => 3 

Array 

    [a] => 1 

    [b] => 2 

    [c] => 3 

**/  

   

// PS:简单的(array)和(object)只能处理单层的数据,对于多层的数组和对象转换则无能为力。  

   

// 2. 多维数组与对象间的转换处理  

   

/** 

 * 将对象转换为多维数组 

 * 

 **/  

function objectToArray($d) {  

    if (is_object($d)) {  

        // Gets the properties of the given object  

        // with get_object_vars function  

        $d = get_object_vars($d);  

    }  

   

    if (is_array($d)) {  

        /* 

        * Return array converted to object 

        * Using __FUNCTION__ (Magic constant) 

        * for recursive call 

        */  

        return array_map(__FUNCTION__, $d);  

    }  

    else {  

        // Return array  

        return $d;  

    }  

}  

    

/** 

 * 将多维数组转换为对象 

 * 

 **/  

function arrayToObject($d) {  

    if (is_array($d)) {  

        /* 

        * Return array converted to object 

        * Using __FUNCTION__ (Magic constant) 

        * for recursive call 

        */  

        return (object) array_map(__FUNCTION__, $d);  

    }  

    else {  

        // Return object  

        return $d;  

    }  

}  

   

// Useage:    

$init = new stdClass;  

$init->foo = "Test data";  

$init->bar = new stdClass;  

$init->bar->baaz = "Testing";  

$init->bar->fooz = new stdClass;  

$init->bar->fooz->baz = "Testing again";  

$init->foox = "Just test";  

   

// Convert array to object and then object back to array  

$array = objectToArray($init);  

$object = arrayToObject($array);  

   

// Print objects and array  

print_r($init);  

print_r($array);  

print_r($object);  

   

 /** 

stdClass Object 

    [foo] => Test data 

    [bar] => stdClass Object 

        ( 

            [baaz] => Testing 

            [fooz] => stdClass Object 

                ( 

                    [baz] => Testing again 

                ) 

        ) 

    [foox] => Just test 

Array 

    [foo] => Test data 

    [bar] => Array 

        ( 

            [baaz] => Testing 

            [fooz] => Array 

                ( 

                    [baz] => Testing again 

                ) 

        ) 

    [foox] => Just test 

stdClass Object 

    [foo] => Test data 

    [bar] => stdClass Object 

        ( 

            [baaz] => Testing 

            [fooz] => stdClass Object 

                ( 

                    [baz] => Testing again 

                ) 

        ) 

    [foox] => Just test 

**/


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP