小编典典

php stdClass 到数组

all

我在将对象 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"   } }

如果我尝试制作,则演员后为空 NULLvar_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;
        }
    }

阅读 55

收藏
2022-05-26

共1个答案

小编典典

懒惰 的单线方法

如果您愿意损失一点点性能,您可以使用 JSON 方法在单行中执行此操作(尽管有些人报告说它比递归遍历对象更快 - 很可能是因为
PHP在调用函数方面很慢)。“ 但我已经这样做了
”你说。不完全是-您json_decode在数组上使用过,但您需要先对其进行编码json_encode

要求

json_encode方法json_decode。这些自动捆绑在
PHP 5.2.0 及更高版本中。如果您使用任何旧版本,还有一个PECL
(也就是说,在这种情况下,您应该 真正 更新您的 PHP 安装。对 5.1
的支持在 2006 年停止。)


转换array/ stdClass->stdClass

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

转换array/ stdClass->array

该手册将第二个参数指定json_decode为:

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

因此,以下行会将您的整个对象转换为数组:

$array = json_decode(json_encode($booking), true);
2022-05-26