객체를 배열로 변환
WordPress와 함께 작업하고 있는데 개체 세부 정보를 정렬할 수 없다고 생각하기 때문에 정렬할 수 있도록 개체를 배열로 변환하는 방법이 궁금했습니다.
어떤 도움이나 안내라도 해주시면 대단히 감사하겠습니다.
WP 함수 get_categories()를 사용하고 있습니다;
$category의 전체 내용은 다음과 같습니다.
$category->term_id
$category->name
$category->slug
$category->term_group
$category->term_taxonomy_id
$category->taxonomy
$category->description
$category->parent
$category->count
$category->cat_ID
$category->category_count
$category->category_description
$category->cat_name
$category->category_nicename
$category->category_parent
$array = json_decode(json_encode($object), true);
개체가 너무 복잡하지 않은 경우(네스팅 측면에서) 클래스를 배열로 캐스트할 수 있습니다.
$example = new StdClass();
$example->foo = 'bar';
var_dump((array) $example);
출력:
array(1) { ["foo"]=> string(3) "bar" }
그러나 이렇게 하면 기본 레벨만 변환됩니다.다음과 같은 중첩 개체가 있는 경우
$example = new StdClass();
$example->foo = 'bar';
$example->bar = new StdClass();
$example->bar->blah = 'some value';
var_dump((array) $example);
그러면 기본 개체만 배열로 캐스트됩니다.
array(2) {
["foo"]=> string(3) "bar"
["bar"]=> object(stdClass)#2 (1) {
["blah"]=> string(10) "some value"
}
}
더 깊이 들어가려면 재귀를 사용해야 합니다.여기에는 개체를 배열로 변환하는 좋은 예가 있습니다.
아주 단순한
$array = (array)$object;
http://www.php.net/manual/en/language.types.array.php#language.types.array.casting
개체를 배열로 변환하려면 다음과 같이 하십시오.get_object_vars()
(PHP 매뉴얼):
$categoryVars = get_object_vars($category)
@galen에 추가하기
<?php
$categories = get_categories();
$array = (array)$categories;
?>
전체 객체와 모든 속성을 배열로 변환하려면 제가 한동안 사용했던 이 투박한 기능을 사용하면 됩니다.
function object_to_array($object)
{
if (is_array($object) OR is_object($object))
{
$result = array();
foreach($object as $key => $value)
{
$result[$key] = object_to_array($value);
}
return $result;
}
return $object;
}
데모: http://codepad.org/Tr8rktjN
그러나 예를 들어, 해당 데이터를 사용하면 다른 사람들이 이미 말한 대로 배열에 캐스트할 수 있습니다.
$array = (array) $object;
덜 투박한 방법은 다음과 같습니다.
function objectToArray($object)
{
if(!is_object( $object ) && !is_array( $object ))
{
return $object;
}
if(is_object($object) )
{
$object = get_object_vars( $object );
}
return array_map('objectToArray', $object );
}
(http://www.sitepoint.com/forums/showthread.php?438748-convert-object-to-array) 에서 가져온 정보입니다. 클래스의 메소드로 사용하려면 마지막 행을 다음과 같이 변경합니다.
return array_map(array($this, __FUNCTION__), $object );
언급URL : https://stackoverflow.com/questions/7447689/convert-an-object-to-an-array
'programing' 카테고리의 다른 글
스키마 정의와 스키마 정의의 차이? (0) | 2023.09.23 |
---|---|
nodejs에서 senecajs(micros 서비스 툴킷)를 사용하여 mariadb에 질문 배열을 삽입하는 방법? (0) | 2023.09.23 |
Oracle 데이터 펌프 내보내기 유틸리티를 사용하여 로컬 시스템에서 덤프 파일을 만드는 방법은 무엇입니까? (0) | 2023.09.23 |
왼쪽 전환에서 CSS 3 슬라이드 인 (0) | 2023.09.23 |
Aligning text in SVG (0) | 2023.09.18 |