将数组中的数组和对象转换为纯数组

时间:2012-05-17 07:47:54

标签: php arrays

我的数组就像:

Array
(
    [0] => stdClass Object
        (
            [id] => 1
            [name] => demo1
        )
    [1] => stdClass Object
        (
            [id] => 2
            [name] => demo2
        )
    [2] => stdClass Object
        (
            [id] => 6
            [name] => otherdemo
        )
)

如何将整个数组(包括对象)转换为纯多维数组?

7 个答案:

答案 0 :(得分:26)

您是否尝试过类型转换?

$array = (array) $object;

实际上还有另一个技巧

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

请参阅PHP手册中的json_encode,第二个参数名为 assoc

  

<强> ASSOC

     

TRUE时,返回的对象将被转换为关联数组。

这正是您正在寻找的。

您也可以尝试这样做:Convert Object To Array With PHP (phpro.org)

答案 1 :(得分:5)

您可以使用array_walk将每个项目从对象转换为数组:

function convert(&$item , $key)
{
   $item = (array) $item ;
}

array_walk($array, 'convert');

答案 2 :(得分:2)

请使用:

json_decode(json_encode($yourArray), true);

答案 3 :(得分:0)

您应该投射所有对象,例如:

$result = array();
foreach ($array as $object)
{
    $result[] = (array) $object
}

答案 4 :(得分:0)

当您使用OOP时,最简单的方法是拉动代码将自身转换为类本身的数组,然后只需调用此方法并让返回的数组填充原始数组。

class MyObject {

    private $myVar;
    private $myInt;

    public function getVarsAsArray() {

        // Return the objects variables in any structure you need
        return array($this->myVar,$this->myInt);

    }

    public function getAnonVars() {

        // If you don't know the variables
        return get_object_vars($this);
    }
}

有关get_object_vars()

的信息,请参阅:http://www.php.net/manual/en/function.get-object-vars.php

答案 5 :(得分:0)

假设你想要使用这种纯数组格式:

Array
(
  [1] => "demo1",    
  [2] => "demo2",
  [6] => "otherdemo",
)

然后我会这样做:

$result = array();
foreach ($array as $object)
{
    $result[$object->id] = $object->name
}

(编辑)实际上,我正在寻找的可能不是OP正在寻找的东西。可能对其他搜索者有用。

答案 6 :(得分:0)

如果你有对象并且你想将一个值设置为数组 使用

$this->object->pluck('name');

然后你会得到作为名称数组的值

["name1", "name2", "name3"];