stdClass对象问题

ade*_*der 5 php arrays stdclass

我正在努力使用PHP解析下面的数据.API返回它,我尝试了各种语法.如何以非对象方式返回数据?或者,使用stdClass调用数据的语法是什么?

我可以将其转换为一个基于数据的数组,甚至两个?当谈到基于对象的数据集时,我迷失了方向.

stdClass Object
(
    [0] => stdClass Object
        (
            [district] => stdClass Object
                (
                    [state] => NY
                    [number] => 29
                )

        )

    [1] => stdClass Object
        (
            [district] => stdClass Object
                (
                    [state] => NY
                    [number] => 26
                )

        )

)
Run Code Online (Sandbox Code Playgroud)

当我自己创建对象,然后执行var_dump时,我得到这个:

object(stdClass)#8 (2) {
  [0]=>
  object(stdClass)#4 (1) {
    ["district"]=>
    object(stdClass)#5 (2) {
      ["state"]=>
      string(2) "NY"
      ["number"]=>
      string(2) "29"
    }
  }
  [1]=>
  object(stdClass)#6 (1) {
    ["district"]=>
    object(stdClass)#7 (2) {
      ["state"]=>
      string(2) "NY"
      ["number"]=>
      string(2) "26"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

sou*_*rge 14

他们可能在他们的代码($object = (object) $array)中将数组转换为对象.这样做的好处是它将从现在开始通过引用传递(对象的默认设置)和对象完全无用的缺点(成员不能以数字开头 - 请参阅PHP文档中正则表达式),直到将其转换回来(PHP确实允许一些非常神秘的东西):

$array = (array) $bogusObject;
$array[0]->district->state === 'NY';
Run Code Online (Sandbox Code Playgroud)

  • 实际上不需要强制转换为数组...也可以使用$ object - > {0} - >分区...... (5认同)

nul*_*ull 10

使用:

$object->{'0'}->district->state
Run Code Online (Sandbox Code Playgroud)

基本上你是在为一个变量分配字符串,然后使用该变量作为对象访问器.

$zero = "0";
$object->$zero; /* or */ $object->{$zero};
Run Code Online (Sandbox Code Playgroud)