将对象转换为数组

时间:2011-09-16 16:21:40

标签: php arrays wordpress oop

我正在使用WordPress,因为我不相信可以对对象详细信息进行排序,所以我想知道如何将Object转换为Array,所以排序是可能的。

非常感谢任何帮助或指导。

我正在使用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 个答案:

答案 0 :(得分:7)

$array = json_decode(json_encode($object), true);

答案 1 :(得分:6)

如果对象不是太复杂(就嵌套而言),您可以将类强制转换为数组:

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

为了更深入,你必须使用递归。数组转换的对象有一个很好的例子here

答案 2 :(得分:3)

要将对象转换为数组,您可以使用get_object_vars()PHP manual):

$categoryVars = get_object_vars($category)

答案 3 :(得分:2)

答案 4 :(得分:1)

要将整个对象及其所有属性转换为数组,您可以使用我已经踢了一段时间的这个笨重的函数:

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;

答案 5 :(得分:1)

添加到@galen

<?php 
    $categories = get_categories(); 
    $array = (array)$categories;  
?>

答案 6 :(得分:1)

一种不那么笨重的方式可能是:

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 );