如何在PHP中将数组转换为对象?

2022-08-30 05:52:41

如何将这样的数组转换为对象?

[128] => Array
    (
        [status] => "Figure A.
 Facebook's horizontal scrollbars showing up on a 1024x768 screen resolution."
    )

[129] => Array
    (
        [status] => "The other day at work, I had some spare time"
    )

答案 1

在最简单的情况下,将数组“强制”为对象可能就足够了:

$object = (object) $array;

另一种选择是将标准类实例化为变量,并在重新分配值时遍历数组:

$object = new stdClass();
foreach ($array as $key => $value)
{
    $object->$key = $value;
}

正如Edson Medina所指出的,一个真正干净的解决方案是使用内置函数:json_

$object = json_decode(json_encode($array), FALSE);

这也(递归地)将所有子数组转换为对象,您可能想要也可能不需要。不幸的是,与循环方法相比,它的性能受到2-3倍的打击

警告!(感谢Ultra的评论):

不同环境json_decode以不同的方式转换 UTF-8 数据。我最终在本地获得了值“240.00”,在生产中获得了“240”的值 - 巨大的差速。如果转换失败,则 Morover 字符串将返回为 NULL


答案 2

您可以简单地使用类型转换将数组转换为对象。

// *convert array to object* Array([id]=> 321313[username]=>shahbaz)
$object = (object) $array_name;

//now it is converted to object and you can access it.
echo $object->username;