当前位置: 首页 > 知识库问答 >
问题:

php 标准类到数组

赏夕
2023-03-14

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

如果我尝试生成<code>var_dump($booking),则after cast为空NULL

我也尝试过这个函数,但总是空的:

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;
        }
    }

共有3个答案

申辉
2023-03-14

使用内置的类型转换功能,只需键入

$realArray = (array)$stdClass;
贲永思
2023-03-14

使用此函数可以获得您所追求的类型的标准数组。。。

return get_object_vars($booking);
璩涵衍
2023-03-14

如果您愿意损失一点性能,您可以使用JSON方法在一行程序中实现这一点(尽管有些人报告它比递归遍历对象更快——很可能是因为PHP调用函数的速度慢)。“但我已经做到了”你说。不完全正确-您在数组上使用了json_decode,但您需要首先使用json_encode对其进行编码。

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

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

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

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

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

$array = json_decode(json_encode($booking), true);
 类似资料:
  • PHP 标准库 (SPL) 随着 PHP 一起发布,提供了一组类和接口。包含了常用的数据结构类 (堆栈,队列,堆等等),以及遍历这些数据结构的迭代器,或者你可以自己实现 SPL 接口。

  • 问题内容: 我知道PHP通常用于web开发,那里 是 没有标准的输入,但是PHP声称是可用作通用脚本语言,如果你遵循它的古怪基于web的约定。我知道PHP可以使用和打印到(或任何您想调用的东西),这很简单,但是我想知道PHP脚本如何从(特别是使用,但是任何输入函数都可以)从中获取输入,或者这甚至可能吗? 问题答案: 可以通过创建一个文件句柄来读取,然后用来读取它,例如使用一行(或者,您已经说过,使

  • PSR 是 PHP Standard Recommendations 的简写,由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准。

  • 本文向大家介绍标准PHP的AES加密算法类,包括了标准PHP的AES加密算法类的使用技巧和注意事项,需要的朋友参考一下 分享一个标准PHP的AES加密算法类,其中mcrypt_get_block_size('rijndael-128', 'ecb');,如果在不明白原理的情况下比较容易搞错,可以通过mcrypt_list_algorithms函数查看你需要的加密算法标识。 以上就是本文所述的全部内

  • 到现在我们已经实现了我们那点唱机的一部分代码,我们看到了数组,哈希,方法,但我们还没有涉及到Ruby中其他的数据类型:数字,字符串,范围(ranges),正则表达式。下面我们就要花些时间来看看这些类型。 数字型Ruby 支持整型和浮点型两种数字类型。整型可以是任意长度(最大值由你机器的内存大小决定)。在一定范围内(通常是-230 to 230-1 or -262 to 262-1)在内部由二进制方

  • vector 是可变大小的数组。和 slice(切片)类似,它们的大小在编译期不可预知,但他们可以随时扩大或缩小。一个 vector 使用 3 个词来表示:一个指向数据的指针,它的长度,还有它的容量。此容量表明了分配多少内存给这 vector。vector 只要小于该容量,就可以随意增长。当临界值就要达到时,vector 会重新分配一个更大的容量。 fn main() { // 迭代器可以