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

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

PHPz
풀어 주다: 2023-04-27 14:34:54
원래의
742명이 탐색했습니다.

PHP 개발에서는 데이터 전송 및 처리를 용이하게 하기 위해 객체를 배열로 변환해야 하는 경우가 있습니다. 이 기사에서는 PHP에서 객체를 배열로 변환하는 방법을 소개합니다.

1. 변환을 위해 get_object_vars 함수를 사용하세요

PHP의 내장 함수 get_object_vars는 객체에 표시되는 모든 속성의 배열 표현을 가져올 수 있으며(키는 속성 이름, 값은 속성 값) 사용할 수 있습니다. 필요한 배열로 직접 반환되는 배열입니다.

샘플 코드:

class Car {
    public $brand = 'Audi';
    public $model = 'A6';
    private $price = 80000;
    
    public function __construct()
    {
        # code...
    }
}

$car = new Car();
$arr = get_object_vars($car);
print_r($arr);
로그인 후 복사

실행 결과:

Array
(
    [brand] => Audi
    [model] => A6
)
로그인 후 복사
로그인 후 복사

$price 속성이 비공개이므로 반환된 배열에 나타나지 않는 것을 알 수 있습니다.

2. 변환을 위해 json_decode 함수를 사용하세요

PHP 내장 함수 json_decode를 사용하여 객체를 JSON 형식의 문자열로 변환한 다음 배열로 변환할 수 있습니다.

샘플 코드:

class Car {
    public $brand = 'Audi';
    public $model = 'A6';
    private $price = 80000;
    
    public function __construct()
    {
        # code...
    }
}

$car = new Car();
$jsonStr = json_encode($car);
$arr = json_decode($jsonStr, true);
print_r($arr);
로그인 후 복사

실행 결과:

Array
(
    [brand] => Audi
    [model] => A6
)
로그인 후 복사
로그인 후 복사

마찬가지로 $price 속성은 private이므로 변환된 배열에 나타나지 않습니다.

3. 변환을 위해 유형 캐스트를 사용하세요

PHP에서는 get_object_vars 함수와 json_decode 함수를 사용하여 객체를 배열로 변환하는 것 외에도 변환을 위해 캐스트를 사용할 수도 있습니다. 객체를 배열 유형으로 강제 변환할 수 있습니다. 반환된 배열의 키는 속성 이름이고 값은 속성 값입니다.

샘플 코드:

class Car {
    public $brand = 'Audi';
    public $model = 'A6';
    private $price = 80000;
    
    public function __construct()
    {
        # code...
    }
}

$car = new Car();
$arr = (array) $car;
print_r($arr);
로그인 후 복사

실행 결과:

Array
(
    [brand] => Audi
    [model] => A6
    [*price] => 80000
)
로그인 후 복사

get_object_vars 함수 및 json_decode 함수의 변환 결과와 달리 강제 유형 변환 후 배열에는 public 속성 외에 private 속성도 포함되는 것을 확인할 수 있습니다. *로 시작하는 태그는 비공개 속성을 나타냅니다.

객체에 __toString 메서드가 있는 경우 __toString 메서드의 반환 값은 캐스팅 시 배열의 첫 번째 요소(키가 0이고 값이 반환 값임)로 사용된다는 점에 유의해야 합니다. 배열.

4. 변환을 위해 리플렉션 사용

PHP의 리플렉션 메커니즘은 클래스, 개체 및 메서드를 분석하고 호출할 수 있습니다. 리플렉션은 개체의 속성과 메서드를 가져오는 기능을 제공하며 개체의 속성과 액세스 수준을 가져올 수 있습니다. .(공개, 비공개 또는 보호).

샘플 코드:

class Car {
    public $brand = 'Audi';
    public $model = 'A6';
    private $price = 80000;
    
    public function __construct()
    {
        # code...
    }
}

$car = new Car();
$reflection = new ReflectionObject($car);
$arr = [];

foreach ($reflection->getProperties() as $property) {
    $property->setAccessible(true);
    $arr[$property->getName()] = $property->getValue($car);
}

print_r($arr);
로그인 후 복사

실행 결과:

Array
(
    [brand] => Audi
    [model] => A6
    [price] => 80000
)
로그인 후 복사

Reflection을 통해 객체 속성을 획득할 때 접근 수준(public, private, protected)에 의해 제한되지 않는 것을 확인할 수 있습니다. 이름과 속성 값이 배열에 포함됩니다.

요약하자면, 이 글에서는 PHP에서 객체를 배열로 변환하는 다양한 방법을 소개합니다. 실제 개발에서는 코드의 요구사항과 실제 상황에 따라 어떤 방법을 선택할지 결정해야 합니다.

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

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