为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 对象、数组间的转换

标签:
PHP

/** 

 * 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 

**/


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消