stdClass到数组?

时间:2012-07-09 13:29:26

标签: php

我有:

stdClass Object
(
    [0] => stdClass Object
        (
            [one] => aaa
            [two] => sss
        )

    [1] => stdClass Object
        (
            [one] => ddd
            [two] => fff
        )

    [2] => stdClass Object
        (
            [one] => ggg
            [two] => hhh
        )
}

并且我必须通过密钥获取此功能,例如:

$var = $stdClass[0]; 

但我有错误:

  

致命错误:无法在

中使用stdClass类型的对象作为数组

是否可以将此stdClass解析为数组并将其与键一起使用?

11 个答案:

答案 0 :(得分:65)

将其投射到数组:

$array = (array)$stdClass;

答案 1 :(得分:35)

如果您使用json_decode将该JSON字符串转换为对象,则可以使用第二个参数json_decode($string, true)并将该对象转换为关联数组。

如果没有,其他人都说了什么,只是输入它

$array = (array) $stdClass;

答案 2 :(得分:8)

你的问题可能已经解决,因为要求,但作为参考,快速的叔叔谷歌回答:

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;
  }
}

完整文章here。注意我没有以任何方式与原作者联系。

答案 3 :(得分:7)

施展

$array = (array) $stdObject;

答案 4 :(得分:4)

当然你可以强制转换$var = (array) $obj;,但我会向你的班级建议ArrayAccess

通过使用ArrayAccess,您可以将对象和数据视为数组,或原生为对象。

答案 5 :(得分:3)

将其投射到数组中。目前,PHP作为一个数组是不可读的。

$array = (array)$stdClass;

答案 6 :(得分:3)

基本上,只需输入它:

$arr = (array)$obj;
$var = $arr[0];

但请阅读警告here

答案 7 :(得分:2)

如果您有嵌套数组,则可以使用json_encodejson_decode将整个对象转换为数组:

$result = json_decode(json_encode($source), JSON_OBJECT_AS_ARRAY);

答案 8 :(得分:1)

这个对我有用, 解码和编码使得常规数组

php

答案 9 :(得分:0)



+------+------+-------+-------+
| Name | Year | Stock | Value |
+------+------+-------+-------+
| John | 2020 | ABC   |   123 |
| John | 2021 | ABC   |   123 |
| John | 2021 | XYZ   |   200 |
| John | 2022 | ABC   |   123 |
| John | 2022 | XYZ   |   200 |
| John | 2022 | JKL   |   500 |
| John | 2023 | XYZ   |   200 |
| John | 2023 | JKL   |   500 |
+------+------+-------+-------+



答案 10 :(得分:-3)

stdClass是一个对象,所以你可以像

那样访问它的值
echo stdClass->one;