Преобразовать объект в массив - PullRequest
3 голосов
/ 16 сентября 2011

Я работаю с 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

Ответы [ 7 ]

7 голосов
/ 05 апреля 2016
$array = json_decode(json_encode($object), true);
6 голосов
/ 16 сентября 2011

Если объект не слишком сложный (с точки зрения вложенности), вы можете привести класс к массиву:

$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" 
  }
} 

Чтобы углубиться, вам придется использовать рекурсию.Вот хороший пример преобразования объекта в массив здесь .

3 голосов
/ 16 сентября 2011

Для преобразования объекта в массив вы можете использовать get_object_vars() ( Руководство по PHP ):

$categoryVars = get_object_vars($category)
2 голосов
/ 16 сентября 2011
1 голос
/ 28 марта 2012

Менее неуклюжий способ может быть следующим:

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 ); 
1 голос
/ 16 сентября 2011

Добавить в @ galen

<?php 
    $categories = get_categories(); 
    $array = (array)$categories;  
?>
1 голос
/ 16 сентября 2011

Чтобы преобразовать весь объект и все его свойства в массивы, вы можете использовать эту неуклюжую функцию, с которой я некоторое время работал:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...