给定以下数组:
$array = array(
'item_1' => array(
'item_1_1' => array(
'item_1_1_1' => 'Hello',
),
'item_1_2' => 'World',
),
'item_2' => array(),
);
如何将其转换为对象?
Option 1
$obj = (object) $array;
或者
Option 2
$object = json_decode(json_encode($array), FALSE);
还是别的什么?
我想知道两个选项之间的输出差异,并了解创建此转换的最佳实践。
最佳答案
好吧,你正在以某种方式回答你自己的问题,但是如果你想要一个具有像你的数组这样的属性的对象,你必须转换它,这样数组将仍然是一个数组
$obj = (object) $array;
输出:
object(stdClass)#1 (2) {
["item_1"]=>
array(2) {
["item_1_1"]=>
array(1) {
["item_1_1_1"]=>
string(5) "Hello"
}
["item_1_2"]=>
string(5) "World"
}
["item_2"]=>
array(0) {
}
}
如果您使用 json_decode 版本,它也会将数组转换为对象:
object(stdClass)#2 (2) {
["item_1"]=>
object(stdClass)#3 (2) {
["item_1_1"]=>
object(stdClass)#4 (1) {
["item_1_1_1"]=>
string(5) "Hello"
}
["item_1_2"]=>
string(5) "World"
}
["item_2"]=>
array(0) {
}
}
注意:这里只有空数组才是数组。
回答您的问题:最佳实践取决于您的需要。
关于PHP 数组到对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34136772/