在PHP中将数组转换为对象
因此,我了解到要将数组转换为对象,只需在变量前面使用在PHP中将数组转换为对象,php,arrays,object,Php,Arrays,Object,因此,我了解到要将数组转换为对象,只需在变量前面使用(object),比如$my\u obj=(object)$my\u array。既然如此,为什么在执行下面的代码时会出现以下错误 注意尝试获取第26行上非对象的属性 难道我不能使用$car->make访问对象的属性吗? 这里有一个多维数组。通过调用$cars=(object)$cars基本上创建以下对象: $cars = { '0' => [ 'make' => 'Audi', 'mode
(object)
,比如$my\u obj=(object)$my\u array
。既然如此,为什么在执行下面的代码时会出现以下错误
注意尝试获取第26行上非对象的属性
难道我不能使用$car->make
访问对象的属性吗?
这里有一个多维数组。通过调用$cars=(object)$cars代码>基本上创建以下对象:
$cars = {
'0' => [
'make' => 'Audi',
'model' => 'A4',
'year' => '2014'
],
'1' => [
'make' => 'Benz',
'model' => 'c300',
'year' => '2015'
],
'2' => [
'make' => 'BMW',
'model' => 'i8',
'year' => '2016'
]
};
内部数组仍然是数组。isntead要做的是将内部数组转换为对象,同时让外部数组成为数组。这可以通过函数数组\u map
完成:
$cars = array_map(function($array){
return (object)$array;
}, $cars);
这将创建所需的输出
$cars = [
{
'make' => 'Audi',
'model' => 'A4',
'year' => '2014'
},
{
'make' => 'Benz',
'model' => 'c300',
'year' => '2015'
},
{
'make' => 'BMW',
'model' => 'i8',
'year' => '2016'
}
];
这里有一个多维数组。通过调用$cars=(object)$cars代码>基本上创建以下对象:
$cars = {
'0' => [
'make' => 'Audi',
'model' => 'A4',
'year' => '2014'
],
'1' => [
'make' => 'Benz',
'model' => 'c300',
'year' => '2015'
],
'2' => [
'make' => 'BMW',
'model' => 'i8',
'year' => '2016'
]
};
内部数组仍然是数组。isntead要做的是将内部数组转换为对象,同时让外部数组成为数组。这可以通过函数数组\u map
完成:
$cars = array_map(function($array){
return (object)$array;
}, $cars);
这将创建所需的输出
$cars = [
{
'make' => 'Audi',
'model' => 'A4',
'year' => '2014'
},
{
'make' => 'Benz',
'model' => 'c300',
'year' => '2015'
},
{
'make' => 'BMW',
'model' => 'i8',
'year' => '2016'
}
];
您仅将外层投射到对象。您可能需要$car=(object)$car代码>在循环内部,而不是外部(使用$cars
)。最干净的方法确实是$object=json\u decode(json\u encode($array),FALSE)代码>仅将外层投射到对象。您可能需要$car=(object)$car代码>在循环内部,而不是外部(使用$cars
)。最干净的方法确实是$object=json\u decode(json\u encode($array),FALSE)代码>