PHP에서 객체를 배열로 강제 변환하는 방법: 1. 정의된 "object_array" 메서드를 통해 변환합니다. 2. "json_decode" 메서드를 통해 변환합니다. 3. 정의된 "object2array_pre" 메서드를 통해 변환합니다.
이 문서의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터
PHP 개체를 배열로
1.
//PHP stdClass Object转array function object_array($array) { if(is_object($array)) { $array = (array)$array; } if(is_array($array)) { foreach($array as $key=>$value) { $array[$key] = object_array($value); } } return $array; }
2.
$array = json_decode(json_encode(simplexml_load_string($xmlString)),TRUE);
3.
function object2array_pre(&$object) { if (is_object($object)) { $arr = (array)($object); } else { $arr = &$object; } if (is_array($arr)) { foreach($arr as $varName => $varValue){ $arr[$varName] = $this->object2array($varValue); } } return $arr; }
4 .데이터 볼륨이 10W이면 실행에 1초가 소요됩니다. 구조가 더 복잡하면 3초에 도달할 수 있습니다. 다음과 같이 대체할 수 있습니다.
function object2array(&$object) { $object = json_decode( json_encode( $object),true); return $object; }
json_decode(json_encode($array),true)
다층 배열 및 객체 변환의 목적은 매우 간단하고 편리합니다. WebService에서 다층 배열 및 객체의 변환을 처리합니다. [추천 학습: "PHP Video Tutorial"]
Simple (array) and (object) can can be 단일 레이어 데이터만 처리하고, 다중 레이어 배열 및 객체 변환은 할 수 없습니다.
객체는 json_decode(json_encode($object)를 통해 한 번에 배열로 변환할 수 있지만 객체에서 gbk 중국어와 같이 utf-8로 인코딩되지 않은 비 ASCII 문자를 만날 때 문제가 발생합니다. json_encode 및 decode의 성능도 좋지 않습니다. 의심해볼 가치가 있습니다
아래 코드:
<?php 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: // Create new stdClass Object $init = new stdClass; // Add some test data $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); echo "\n"; print_r($array); echo "\n"; print_r($object); ?>
위 내용은 PHP에서 객체를 배열로 강제하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!