PHP的stdClass数组?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (130)

我有一个问题,如何将对象stdClass转换为数组。我试过这种方式:

return (array) $booking;

要么

return (array) json_decode($booking,true);

要么

return (array) json_decode($booking);

转换之前的数组是完整的一个记录,在我试转换后是空的。如何在不删除行的情况下进行转换?

之前的阵列:

array(1) {   [0]=>   object(stdClass)#23 (36) {     ["id"]=>     string(1) "2"     ["name"]=>     string(0) ""     ["code"]=>     string(5) "56/13"   } } 

如果我试过做一个 var_dump($booking);

我也试过这个功能,但总是空的:

public function objectToArray($d) {
        if (is_object($d)) {
            // Gets the properties of the given object
            // with get_object_vars function
            $d = get_object_vars($d);
        }

        if (is_array($d)) {
            /*
            * Return array converted to object
            * Using __FUNCTION__ (Magic constant)
            * for recursive call
            */
            return array_map(__FUNCTION__, $d);
        }
        else {
            // Return array
            return $d;
        }
    }
提问于
用户回答回答于

lazy one-liner方法

你可以,如果你愿意失去的性能一点点( -最有可能是因为PHP是虽然有些已经报告说,它比通过迭代对象更快递归使用JSON方法的一个衬垫做到这一点,在调用函数慢)。“ 但是我已经这样做了 ”你说。不完全是 - 你json_decode在数组上使用,但你需要先编码它json_encode

要求

json_encodejson_decode方法。这些自动绑定在PHP 5.2.0及以上。如果你使用任何旧版本也有一个PECL库(即说,在这种情况下,你应该真正升级你的PHP安装。在2006年停止了5.1的支持)

转换一个array/ stdClass- >stdClass

$stdClass = json_decode(json_encode($booking));

转换一个array/ stdClass- >array

该手册指定了第二个参数json_decodeas:

assoc TRUE,返回的对象将被转换为关联数组。

因此,下面这行会将你的整个对象转换成一个数组:

$array = json_decode(json_encode($booking), true);
用户回答回答于

使用这个函数可以得到一个标准数组,它的类型与您所追求的类型相同...

return get_object_vars($booking);

扫码关注云+社区

领取腾讯云代金券