我的数组就像:
Array
(
[0] => stdClass Object
(
[id] => 1
[name] => demo1
)
[1] => stdClass Object
(
[id] => 2
[name] => demo2
)
[2] => stdClass Object
(
[id] => 6
[name] => otherdemo
)
)
如何将整个数组(包括对象)转换为纯多维数组?
答案 0 :(得分:26)
您是否尝试过类型转换?
$array = (array) $object;
实际上还有另一个技巧
$json = json_encode($object);
$array = json_decode($json, true);
请参阅PHP手册中的json_encode
,第二个参数名为 assoc :
<强> ASSOC 强>
当
TRUE
时,返回的对象将被转换为关联数组。
这正是您正在寻找的。 p>
答案 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()
答案 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"];