Php stdClass到数组?
我有: 我必须用钥匙来取这个,例如:Php stdClass到数组?,php,Php,我有: 我必须用钥匙来取这个,例如: stdClass Object ( [0] => stdClass Object ( [one] => aaa [two] => sss ) [1] => stdClass Object ( [one] => ddd [two] => fff )
stdClass Object
(
[0] => stdClass Object
(
[one] => aaa
[two] => sss
)
[1] => stdClass Object
(
[one] => ddd
[two] => fff
)
[2] => stdClass Object
(
[one] => ggg
[two] => hhh
)
}
但我有一个错误:
致命错误:无法将stdClass类型的对象用作中的数组
是否可以将此stdClass解析为数组并与键一起使用?将其强制转换为数组:
$var = $stdClass[0];
function objectToArray($d) {
if(is_object($d)) {
$d = get_object_vars($d);
}
if(is_array($d)) {
return array_map(__FUNCTION__, $d); // recursive
} else {
return $d;
}
}
投
$array = (array)$stdClass;
将其放入阵列中。目前,PHP无法将其作为数组读取
$array = (array) $stdObject;
基本上,只需键入cast即可:
$array = (array)$stdClass;
但是请阅读注意事项。如果要使用
json\u decode
将该json字符串转换为对象,则可以使用第二个参数json\u decode($string,true)
,将该对象转换为关联数组
如果没有,其他人都说了些什么,只需输入即可
$array=(array)$stdClass代码>stdClass是一个对象,因此您可以像
$arr = (array)$obj;
$var = $arr[0];
当然,您可以进行类型转换,$var=(数组)$obj代码>,但我建议你们班
通过使用ArrayAccess
,您可以将对象和数据视为一个数组,或将其视为一个本地对象来处理。您的问题可能已经解决,因为您询问了谷歌快速回答,但仅供参考:
echo stdClass->one;
全文。请注意,我与原作者没有任何联系。这本书对我很有用,
解码和编码使之成为规则数组
$array=json\u decode(json\u encode($object),True)
如果有嵌套数组,可以使用json\u encode
和json\u decode
将整个对象转换为数组:
$var = $stdClass[0];
function objectToArray($d) {
if(is_object($d)) {
$d = get_object_vars($d);
}
if(is_array($d)) {
return array_map(__FUNCTION__, $d); // recursive
} else {
return $d;
}
}
首先,为什么它是一个stdClass
,您不能将它创建为数组吗?当然可以:$arrayRepresentation=(array)$someStdClass;如果现在用户$array[0]可能存在重复,则我有空阵列这仅适用于当前阵列。儿童数组仍然是stdObject@LucciFangorci你没有提到,你想要整棵树。现在我甚至看不出原因:echo$array[0]->two
。这些数据从何而来?我使用json和json_解码函数。我为这个函数添加了参数true,但仍然有空数组$array=json\u decode($jsonData,true)代码>不工作?请给出一个完整的示例,包括JSON数据的样子。如果我使用true,那么我就有空数组。如果我使用你的解决方案,这只适用于当前数组-子数组仍然是stdClass是的,子数组仍然是stdClass
对象,你也必须对它们进行强制转换。@佩塔是的,但我认为他也必须使用foreach。使用json\u decode
应该没有问题,是吗:$array=json\u decode($string,true)
然后使用print\r
将给出带有键的关联数组。$array[0][one]将返回一个只要对象中有对象,就需要将包含的对象强制转换为数组并对其进行迭代。迭代时,访问所需的属性$var->one
。