>  기사  >  백엔드 개발  >  PHP 객체와 배열 간의 변환

PHP 객체와 배열 간의 변환

巴扎黑
巴扎黑원래의
2016-11-23 13:35:10887검색

/**

* PHP 객체와 배열 간 변환

*

* @author Flyer0126

* @since 2012/05/03

**/


// 1. (배열)과 (객체)를 사용하여 간단히 처리

$objTemp = (객체)배열();

$objTemp->a = 1;

$objTemp->b = 2;

$objTemp->c = 3;

$arrTemp = (배열)$objTemp;

print_r($objTemp);

print_r($arrTemp);


 /**

stdClass 객체

(

    [a] => 1

    [b] => 2

    [c] => 3

)

배열

(

    [a] => 1

    [b] => 2

    [c] => 3

)

**/


// PS: 단순(배열) 및 (객체)는 단일 레이어만 처리할 수 있습니다. 데이터 , 다중 레이어 배열 및 개체 변환에 대해 수행할 수 있는 작업은 없습니다.


// 2. 다차원 배열과 객체 간의 변환 처리


/**

* 객체를 다차원 배열로 변환

*

** /

function objectToArray($d) {

if (is_object($d)) {

// 주어진 객체의 속성을 가져옵니다

/ / get_object_vars 함수 사용

$d = get_object_vars($d);

}


if (is_array($d)) {

/*

* 객체로 변환된 배열 반환

* __FUNCTION__(마법 상수) 사용

* 재귀 호출용

* /

return array_map(__FUNCTION__, $d);

}

else {

// 배열 반환

return $ d ;

}

}

/**

* 다차원 배열을 객체로 변환

*

**/

function arrayToObject($d) {

if (is_array($d)) {

/*

* 객체로 변환된 배열 반환

* __FUNCTION__(마법 상수) 사용

* 재귀 호출의 경우

*/

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

}

else {

// 객체 반환

return $d;

}

}


// 사용법 :

$init = 새 stdClass;

$init->foo = "테스트 데이터";

$init->bar = 새 stdClass;

$init->bar->baaz = "테스트 중";

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

$init->bar - >fooz->baz = "다시 테스트 중";

$init->foox = "테스트만";


// 변환 배열을 객체로, 객체를 다시 배열로

$array = objectToArray($init);

$object = arrayToObject($array);


// 객체 및 배열 인쇄

print_r($init);

print_r($array);

print_r($object);


 /**

stdClass 객체

(

    [foo] => 테스트 데이터

    [bar] => stdClass 객체

        (

            [baaz] => 테스트

            [fooz] => stdClass 객체

              (

                   [baz] => 다시 테스트

                )

        )

    [foox] => 그냥 테스트하세요

)

배열

(

    [foo] => 테스트 데이터

    [bar] => 배열

        (

            [baaz] => 테스트

[fooz] => 배열

                (

                    [baz] => 다시 테스트

                )

       )

    [foox ] => 그냥 테스트

)

stdClass 객체

(

    [foo] => 테스트 데이터

    [bar ] => stdClass 개체

        (

            [baaz] => 테스트

            [fooz] => stdClass 개체

               (

                  [baz] => 다시 테스트

                )

        )

    [foox] => )

**/

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.