所以我读到要将数组转换为对象,我可以在(object)
之类的变量前面使用$my_obj = (object) $my_array
。话虽如此,为什么在执行下面的代码时会出现以下错误。
注意尝试在第26行获取非对象的属性
我不能使用$car->make
访问对象的属性吗?
<?php
$cars = array(
array(
'make' => 'Audi',
'model' => 'A4',
'year' => '2014',
),
array(
'make' => 'Benz',
'model' => 'c300',
'year' => '2015',
),
array(
'make' => 'BMW',
'model' => 'i8',
'year' => '2016',
),
);
// Convert $cars array to object
$cars = (object) $cars;
foreach ($cars as $car) {
// Shouldn't I be able to access my object
print $car->make . "<br>";
}
答案 0 :(得分:4)
你有一个多维数字阵列。通过调用range(0)
,您基本上可以创建以下对象:
$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'
]
};
:
array_map
这将创建您想要的输出。
$cars = array_map(function($array){
return (object)$array;
}, $cars);