在PHP中将数组转换为对象

时间:2018-01-16 13:12:31

标签: php arrays object

所以我读到要将数组转换为对象,我可以在(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>";
}

1 个答案:

答案 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);