배열 stdclass <-> array 변환
그게 바로 stdClass 때문인데..
stdClass = 문자열인덱스 배열 구조라고 한다.
예) a -> val = "value";
---------------------------------------------------------------------------
stdClass 는 Json 을 사용할때도 사용 되기도 한다.
스크립트에서 ajax 사용시 넘기는 데이터 타입을 json 으로 지정하면
넘어가는 데이터가 stdClass로 넘어간다.
이럴경우 일반 배열로 다시 변환 하고 싶다면...
json_decode($aa,true); 로 선언하면 된다.
예제
더보기
1차는 배열이고 2차가 클래스 오브젝트일경우 선택하는 방법
오류 표시 : Cannot use object of type stdClass as array
그게 바로 stdClass 때문인데..
stdClass = 문자열인덱스 배열 구조라고 한다.
예) a -> val = "value";
---------------------------------------------------------------------------
stdClass 는 Json 을 사용할때도 사용 되기도 한다.
스크립트에서 ajax 사용시 넘기는 데이터 타입을 json 으로 지정하면
넘어가는 데이터가 stdClass로 넘어간다.
이럴경우 일반 배열로 다시 변환 하고 싶다면...
json_decode($aa,true); 로 선언하면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | <?php // stdClass -> Array 로 변경 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 로 변경 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 ; } } ?> |
예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <? // 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 ); // stdClass -> Array 로 변경 $object = arrayToObject( $array ); // Array -> stdClass 로 변경 // 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <? Array ( [0] => stdClass Object ( [comment_id] => 158 [posting_id] => 208 [writer_id] => chongmoa [writer_name] => 총모아 [comment] => 좋아좋아 [reg_date] => 20140211171220 ) [1] => stdClass Object ( [comment_id] => 159 [posting_id] => 208 [writer_id] => chong [writer_name] => 마이 [comment] => 굿 [reg_date] => 20140211171222 ) ) echo $comment_data [1]->comment_id; ?> |
Reference : https://chongmoa.com/364
'Programming > PHP' 카테고리의 다른 글
[기초 정리] PHP Framework, CodeIgniter 시작하기 [2부] (0) | 2017.07.21 |
---|---|
[기초정리 잘 됨] [PHP] Codeigniter (코드이그나이터) Model (0) | 2017.07.21 |
[Codeigniter DB 연동] 2. Codeigniter 셋팅 (0) | 2017.07.21 |
CodeIgniter GET And POST Form Input Method (0) | 2017.07.21 |
Inheritance between controllers in Codeigniter (0) | 2017.07.21 |
댓글