开发者社区 问答 正文

PHP的stdClass数组

我在将对象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" } } 如果我尝试使铸造后为空NULL 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;
    }
}

展开
收起
保持可爱mmm 2020-01-16 17:12:05 562 分享 版权
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); 问题来源于stack overflow

    2020-01-16 17:12:21
    赞同 展开评论
问答分类:
PHP
问答标签:
问答地址: