> 백엔드 개발 > PHP 튜토리얼 > PHP 对象、数组间的变换

PHP 对象、数组间的变换

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-06-13 10:55:55
원래의
898명이 탐색했습니다.

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 arrayprint_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)**/
로그인 후 복사
관련 라벨:
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿