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

PHP에서 객체를 배열로 변환하는 방법

PHPz
PHPz원래의
2023-04-17 14:14:39668검색

PHP에서는 객체와 배열이 서로 다른 두 가지 데이터 유형입니다. 그러나 클래스 인스턴스화 개체의 속성과 메서드를 쉽게 사용할 수 있도록 배열로 변환하는 등 개체를 배열로 변환해야 하는 경우도 있습니다.

PHP에는 객체를 배열로 변환하는 방법이 여러 가지 있습니다.

1. get_object_vars() 함수를 사용하세요

가장 기본적인 방법이자 가장 간단한 방법입니다. get_object_vars() 함수는 객체의 모든 속성과 속성 값의 배열을 반환할 수 있습니다.

예:

class MyClass {
    public $a = 1;
    protected $b = 2;
    private $c = 3;

    public function test(){
        return "hello world!";
    }
}

$obj = new MyClass();
$array = get_object_vars($obj);

print_r($array);

출력:

Array
(
    [a] => 1
)

get_object_vars() 함수는 공개 속성 $a의 값만 가져오지만 보호 및 비공개 속성 $b 및 $c의 경우 해당 값을 가져오는 것을 볼 수 있습니다. ​​​획득되지 않습니다.

2. 객체 캐스팅 사용

PHP에서는 유형 캐스팅을 사용하여 객체를 배열로 변환할 수 있습니다. 강제 유형 변환은 "(배열)" 키워드를 사용합니다.

예:

class MyClass {
    public $a = 1;
    protected $b = 2;
    private $c = 3;

    public function test(){
        return "hello world!";
    }
}

$obj = new MyClass();
$array = (array) $obj;

print_r($array);

출력:

Array
(
    [a] => 1
    [*b] => 2
    MyClassprivatec] => 3
)

이 배열에는 모든 속성과 속성 값이 포함되어 있지만 보호 속성과 비공개 속성에는 공개 속성과 구별하기 위해 * 또는 클래스 이름이 앞에 붙습니다.

이 메서드는 개체의 메서드를 나열하지 않고 개체의 속성만 나열한다는 점에 유의해야 합니다.

3. json_decode() 함수를 사용하세요.

PHP에서는 json_decode() 함수를 사용하여 JSON 형식 문자열을 배열이나 객체로 변환할 수 있습니다. 따라서 객체의 속성을 JSON 형식으로 인코딩한 다음 배열로 디코딩할 수 있습니다.

예:

class MyClass {
    public $a = 1;
    protected $b = 2;
    private $c = 3;

    public function test(){
        return "hello world!";
    }
}

$obj = new MyClass();
$json = json_encode($obj);
$array = json_decode($json, true);

print_r($array);

출력:

Array
(
    [a] => 1
    [b] => 2
    [MyClassprivatec] => 3
)

이 메서드는 보호 및 개인 속성도 배열로 변환하지만 클래스 이름이 앞에 붙습니다.

요약

위 내용은 get_object_vars() 함수, 강제 유형 변환 및 json_decode() 함수 사용을 포함하여 객체를 배열로 변환하는 여러 가지 방법입니다. 가장 일반적으로 사용되는 것은 Cast 및 json_decode() 함수입니다.

cast 및 json_decode() 함수를 사용할 때 protected 및 private 속성의 값에는 클래스 이름이나 *와 같은 기호가 접두어로 붙을 수 있으며 이는 특정 상황에 따라 처리되어야 합니다.

위 내용은 PHP에서 객체를 배열로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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