将数组和数组中的对象转换为纯数组[重复]

Posted

技术标签:

【中文标题】将数组和数组中的对象转换为纯数组[重复]【英文标题】:Converting array and objects in array to pure array [duplicate] 【发布时间】:2012-05-24 19:07:00 【问题描述】:

我的数组是这样的:

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

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

【问题讨论】:

我想在我的 foreach 循环中使用数组 foreach 可用于迭代 stdClass 的实例,就像它可用于迭代数组一样。根据您的需要,无需转换。 为什么不在你的 foreach 循环中使用该对象? 【参考方案1】:

你尝试过类型转换吗?

$array = (array) $object;

其实还有一个技巧

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

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

关联

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

这正是您要寻找的。​​p>

你也可以试试这个:Convert Object To Array With PHP (phpro.org)

【讨论】:

$array = (array) $object; 不适用于内部子元素【参考方案2】:

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

function convert(&$item , $key)

   $item = (array) $item ;


array_walk($array, 'convert');

【讨论】:

不适用于具有对象数组的多维对象数组【参考方案3】:

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

$result = array();
foreach ($array as $object)

    $result[] = (array) $object

【讨论】:

【参考方案4】:

当您使用 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】:

就用这个吧:

json_decode(json_encode($yourArray), true);

【讨论】:

易卜拉欣早在 2012 年就已经提供了这种技术。【参考方案6】:

假设你想得到这种纯数组格式:

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

那么我会这样做:

$result = array();
foreach ($array as $object)

    $result[$object->id] = $object->name

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

【讨论】:

【参考方案7】:

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

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

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

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

【讨论】:

为什么这个答案完全忽略了 OP 提供的数据?

以上是关于将数组和数组中的对象转换为纯数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用map方法将javascript对象数组转换为其他对象数组[重复]

将对象数组转换为数组[重复]

如何将 json 对象键转换为不同的数组来删除重复项

我想用 JavaScript 将对象数组转换为对象 [重复]

将数据数组转换为具有属性的对象[重复]

将表单数据数组对象转换为 JSON [重复]