如何将数组转换为PHP中的对象?
我如何将这样的数组转换为对象?
[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 ) )
在最简单的情况下,将阵列“转换”为对象可能就足够了:
$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如果转换失败,则字符串get的返回值为NULL
您可以简单地使用类型转换将数组转换为对象。
// *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;
这里有三种方法:
假一个真实的对象:
class convert
{
public $varible;
public function __construct($array)
{
$this = $array;
}
public static function toObject($array)
{
$array = new convert($array);
return $array;
}
}
通过将数组转换为对象将数组转换为对象:
$array = array(
// ...
);
$object = (object) $array;
手动将数组转换为对象:
$object = object;
foreach ($arr as $key => $value) {
$object->{$key} = $value;
}