이와 같은 배열을 객체로 어떻게 변환 할 수 있습니까?
[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);
예쁘지 않지만 작동합니다.
답변
세 가지 방법이 있습니다.
-
실제 물체를 위조하십시오 :
class convert { public $varible; public function __construct($array) { $this = $array; } public static function toObject($array) { $array = new convert($array); return $array; } }
-
배열을 오브젝트로 캐스트하여 오브젝트로 변환하십시오.
$array = array( // ... ); $object = (object) $array;
-
배열을 객체로 수동으로 변환하십시오.
$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. ..."