stdClass到数组?

Luc*_*rci 22 php

我有:

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

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

    [2] => stdClass Object
        (
            [one] => ggg
            [two] => hhh
        )
}
Run Code Online (Sandbox Code Playgroud)

必须用钥匙解决这个问题,例如:

$var = $stdClass[0]; 
Run Code Online (Sandbox Code Playgroud)

但我有错误:

致命错误:不能使用stdClass类型的对象作为数组

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

dec*_*eze 67

将它转换为数组:

$array = (array)$stdClass;
Run Code Online (Sandbox Code Playgroud)

  • `$ array = json_decode($ jsonData,true);`不起作用?请显示完整的示例,包括JSON数据的外观. (4认同)

Mar*_*cck 35

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

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

$array = (array) $stdClass;

  • 使用`json_decode`你应该没有问题:`$ array = json_decode($ string,true);`然后使用`print_r`将为关联数组提供键. (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;
  }
}
Run Code Online (Sandbox Code Playgroud)

全文在这里.注意我没有以任何方式与原作者联系.


Kin*_*nch 7

投吧

$array = (array) $stdObject;
Run Code Online (Sandbox Code Playgroud)

  • 这只适用于当前数组.儿童阵列仍然是stdObject (2认同)