질문Q #8037
object To Array 함수 입니다.
양승현2011-04-01 16:24:54

가끔 object로 받을때가 있거든요.
그대로 써도 상관없지만 array로 바꿔 쓸때가 있기 마련이지요.

 /**
  * object to Array
  *
  * @param object $object 오브젝트
  * @return Array $return 배열
  */
    function objectToArray( $object )
    {
     $return = array();
     
        if( !is_object( $object ) && !is_array( $object ) )
        {
            return $object;
        }
       
        if( is_object( $object ) )
        {
         foreach($object as $key => $value){
          if(count($value) > 0){
     $value = $this->objectToArray($value);
          } else {
           if(isset($value))
      settype($value, 'array');
    }

    if(isset($value))
     $return[$key] = $value;
         }
         
         return $return;
        }else{
         foreach($object as $key=> $value){
          if(count($value) > 0){
     $value = $this->objectToArray($value);
          } else {
           if(isset($value))
      settype($value, 'array');
    }

    if(isset($value))
     $return[$key] = $value;
         }
        }

        return $return;
    }

답변4
#1 변종원(웅파) 2011-04-01 16:31:37
베르만님이 어디서 가져온거 더 간단한거 있을건데요?

야후 right media에서 soap을 통해 가져오는 데이터가 object array라 array로 변환해주는 함수를
하나 만들어서 사용.

public function transObject($data) {
		//array_walk($data, create_function('&$a', 'settype($a, "array"); array_push($a, count($a));'));
		if (gettype($data) != 'array') {
			settype($data, 'array');
		} else {
			array_walk($data, create_function('&$a', 'settype($a, "array");'));
		}
		return $data;
	}
#2 양승현 2011-04-01 16:38:04
잉.. 이리 간단히 되어요? 한번 봐봐야겠네요.. ㅋㅋ
#3 tpae 2011-04-29 04:59:50
 안녕하세요. 제가 알기론 (array) object 할수 있는걸로 아는데요.

<?php

class A {
    private $A; // This will become '\0A\0A'
}

class B extends A {
    private $A; // This will become '\0B\0A'
    public $AA; // This will become 'AA'
}

var_dump((array) new B());
?>
그냥 (array) 케스팅 하면 array로 나와요.

http://www.php.net/manual/en/language.types.array.php#language.types.array.casting
#4 양승현 2011-05-30 10:16:37
케스팅이 되는군요. 새로운걸 배웠습니다. ㅎㅎ