>백엔드 개발 >PHP 문제 >PHP에서 객체를 배열로 강제하는 방법

PHP에서 객체를 배열로 강제하는 방법

藏色散人
藏色散人원래의
2021-03-15 09:31:531887검색

PHP에서 객체를 배열로 강제 변환하는 방법: 1. 정의된 "object_array" 메서드를 통해 변환합니다. 2. "json_decode" 메서드를 통해 변환합니다. 3. 정의된 "object2array_pre" 메서드를 통해 변환합니다.

PHP에서 객체를 배열로 강제하는 방법

이 문서의 운영 환경: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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