将数组和数组中的对象转换为纯数组[重复]
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对象数组转换为其他对象数组[重复]