TIP게시판

제목 object To Array 함수 입니다.
글쓴이 양승현 작성시각 2011/04/01 16:24:54
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 17715   RSS

가끔 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;
    }

 다음글 디렉토리 퍼미션변경, 디렉토리 삭제, 통체로 복사 등등... (1)
 이전글 아직은 부족한 테이블 맞추기 함수..

댓글

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

야후 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;
	}
양승현 / 2011/04/01 16:38:04 / 추천 0
잉.. 이리 간단히 되어요? 한번 봐봐야겠네요.. ㅋㅋ
tpae / 2011/04/29 04:59:50 / 추천 0
 안녕하세요. 제가 알기론 (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
양승현 / 2011/05/30 10:16:37 / 추천 0
케스팅이 되는군요. 새로운걸 배웠습니다. ㅎㅎ