26

我的数组是这样的:

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

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

4

7 回答 7

43

您是否尝试过类型转换?

$array = (array) $object;

其实还有一个技巧

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

您可以json_decode在 PHP 手册中获得更多信息,第二个参数称为assoc

协会

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

这正是您正在寻找的。

您可能也想试试这个:使用 PHP (phpro.org) 将对象转换为数组

于 2012-05-17T07:50:08.473 回答
9

只需使用这个:

json_decode(json_encode($yourArray), true);
于 2017-06-04T16:03:15.100 回答
7

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

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

array_walk($array, 'convert');
于 2012-05-17T07:54:01.460 回答
2

假设您想获得这种纯数组格式:

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

然后我会这样做:

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

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

于 2017-07-20T14:25:50.693 回答
1

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

$result = array();
foreach ($array as $object)
{
    $result[] = (array) $object
}
于 2012-05-17T07:54:14.010 回答
1

当您使用 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);
    }
}

有关信息,请参见:http ://www.php.net/manual/en/function.get-object-vars.phpget_object_vars()

于 2012-05-17T08:21:23.890 回答
1

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

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

然后您将值作为名称数组获取,例如

["name1", "name2", "name3"];
于 2021-01-11T08:49:40.873 回答