배열을 객체로 변경(array to object / object to array) 함수
배열의 차원이 많아지면 문자의 경우 사용하기 불편하여 object로 변환하여 사용하면 타이핑에서 편하기 때문에 서로 변환하는 함수 입니다.
기본적으로 지원하는 형변환을 하면 안되느냐 생각 할 수 있는데 됩니다.
되긴 하는데 다면 하위 차원에 있는 것은 변환이 안됩니다. 그래서 필요한게 아래 처럼 전체 하위까지 모두 변환하는 함수가 필요 한것입니다.
/**
* object 를 하위까지 array로 변경
*
* @param object $obj
* @return array
*/
function object_to_array( object $obj) : array {
if (is_object($obj)) {
$obj = (array) $obj;
}
if (is_array($obj)) {
$new = array();
foreach ($obj as $key => $val) {
$new[$key] = object_to_array($val);
}
} else {
$new = $obj;
}
return $new;
}
/**
* 배열을 하위까지 object로 변경해 준다.
*
* @param array $array
* @return object
*/
function array_to_object( array $array) : object {
if (is_array($array)) {
$obj = new stdClass();
foreach ($array as $key => $val) {
$obj->$key = array_to_object($val);
}
} else {
$obj = $array;
}
return $obj;
}
이런 함수는 클래스 사용하게 되면 util 이나 common 으로 끝나는 클래스에 기본적으로 들어가는 메소드로 추가해 줍니다.
