개발을 하다보면 배열을 자주 다루게 되는데 ..
배열이 아닌것이 배열처럼 보여서 작업할때 헥갈리는 경우가 있다.
그게 바로 stdClass 때문인데..
stdClass = 문자열인덱스 배열 구조라고 한다. (자세한건 잘 모르겠음 ㅡㅡ;)
예) a -> val = "value";
이렇게 선언하면 a 는 stdClass 타입의 클래스가 된다고 함.
---------------------------------------------------------------------------
stdClass 는 Json 을 사용할때도 사용 되기도 한다.
스크립트에서 ajax 사용시 넘기는 데이터 타입을 json 으로 지정하면
넘어가는 데이터가 stdClass로 넘어간다.
이럴경우 일반 배열로 다시 변환 하고 싶다면...
json_decode($aa,true); 로 선언하면 된다.
---------------------------------------------------------------------------
자.. 이제 본론이다.
stdClass -> Array 로 바꾸는 법.
<?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; } } ?>
----------------------------------------------------------------------------
Array -> stdClass
<?php 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; } } ?>
------------------------------------------------------------------------------
예제
// 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);
--------------------------------------------------------------------------------
1차는 배열이고 2차가 클래스 오브젝트일경우 선택하는 방법
오류 표시 : Cannot use object of type stdClass as array
<?
Array (
[0] => stdClass Object (
[comment_id] => 158
[posting_id] => 208
[writer_id] => doremi
[writer_name] => 도레미
[comment] => ㅋㅋㅋ
[reg_date] => 20110624171220 )
[1] => stdClass Object (
[comment_id] => 159
[posting_id] => 208
[writer_id] => loveme
[writer_name] => 나사랑
[comment] => 우하핫
[reg_date] => 20110627090822 )
)
echo $comment_data[1]->comment_id;
화면 출력 : '159' 출력됨
?>
''.' Programs > PHP' 카테고리의 다른 글
[PHP] 키와 밸류 값으로 배열 위치 찾기. (0) | 2012.07.03 |
---|---|
[PHP] 쿠키 설정. (0) | 2012.07.03 |
php에서 원격mssql 접속 (0) | 2012.06.01 |
[PHP] 배열 함수 정리. (0) | 2012.05.10 |
[PHP] 배열함수 array_unique() - 중복된 배열값 제거. (0) | 2012.05.02 |