[php] PHP에서 배열을 객체로 변환하는 방법은 무엇입니까?

이와 같은 배열을 객체로 어떻게 변환 할 수 있습니까?

[128] => Array
    (
        [status] => Figure A.
 Facebook's horizontal scrollbars showing up on a 1024x768 screen resolution.
    )

[129] => Array
    (
        [status] => The other day at work, I had some spare time
    )



답변

가장 간단한 경우에는 배열을 객체로 “캐스트”하는 것으로 충분합니다.

$object = (object) $array;

또 다른 옵션은 표준 클래스를 변수로 인스턴스화하고 값을 다시 할당하면서 배열을 반복하는 것입니다.

$object = new stdClass();
foreach ($array as $key => $value)
{
    $object->$key = $value;
}

에드 슨 메디나는 지적, 정말 깨끗한 솔루션은 내장 사용하는 것입니다 json_기능 :

$object = json_decode(json_encode($array), FALSE);

이것은 또한 (반복적으로) 모든 하위 배열을 원하는 객체로 변환합니다. 불행히도 루핑 방식에 비해 2-3 배의 성능 저하가 있습니다.

경고! (의견에 대해 Ultra에게 감사드립니다) :

다른 환경의 json_decode는 UTF-8 데이터를 다른 방식으로 변환합니다. 나는 로컬에서 ‘240.00’의 값을 얻고 프로덕션에서 ‘240’을 얻는다-대규모 재난. 변환이 실패하면 Morover는 NULL로 리턴됩니다.


답변

타입 캐스팅을 사용하여 배열을 객체로 변환 할 수 있습니다.

// *convert array to object* Array([id]=> 321313[username]=>shahbaz)
$object = (object) $array_name;

//now it is converted to object and you can access it.
echo $object->username;


답변

쉬운 방법은

$object = (object)$array;

그러나 그것은 당신이 원하는 것이 아닙니다. 물건을 원한다면 무언가를 달성하고 싶지만이 질문에는 빠져 있습니다. 객체를 사용하는 이유 때문에 객체를 사용하는 것은 의미가 없습니다.


답변

빠른 해킹 :

// assuming $var is a multidimensional array
$obj = json_decode (json_encode ($var), FALSE);

예쁘지 않지만 작동합니다.


답변

세 가지 방법이 있습니다.

  1. 실제 물체를 위조하십시오 :

    class convert
    {
        public $varible;
    
        public function __construct($array)
        {
            $this = $array;
        }
    
        public static function toObject($array)
        {
            $array = new convert($array);
            return $array;
        }
    }
  2. 배열을 오브젝트로 캐스트하여 오브젝트로 변환하십시오.

    $array = array(
        // ...
    );
    $object = (object) $array;
  3. 배열을 객체로 수동으로 변환하십시오.

    $object = object;
    foreach ($arr as $key => $value) {
        $object->{$key} = $value;
    }

답변

간단한 방법으로 재귀 배열에 대한 객체를 만듭니다.

$object = json_decode(json_encode((object) $yourArray), FALSE);


답변

필요한 위치와 개체에 액세스하는 방법에 따라 다른 방법으로 수행 할 수 있습니다.

예를 들어 : 그냥 typecast

$object =  (object) $yourArray;

그러나 가장 호환 가능한 방법은 유형을 지정하는 문자열을 기반으로 표준 PHP 캐스팅을 구현하는 유틸리티 메소드 (아직 PHP의 일부는 아님)를 사용하는 것입니다 (또는 값을 역 참조하는 것만 무시 함).

/**
 * dereference a value and optionally setting its type
 *
 * @param mixed $mixed
 * @param null  $type (optional)
 *
 * @return mixed $mixed set as $type
 */
function rettype($mixed, $type = NULL) {
    $type === NULL || settype($mixed, $type);
    return $mixed;
}

귀하의 경우 사용 예 ( 온라인 데모 ) :

$yourArray = Array('status' => 'Figure A. ...');

echo rettype($yourArray, 'object')->status; // prints "Figure A. ..."