亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消