将数组转换为对象在PHP中

7 浏览
0 Comments

将数组转换为对象在PHP中

我读到了将数组转换为对象时,可以简单地在变量前面使用(object),像$my_obj = (object) $my_array这样。但是,为什么执行以下代码时会出现以下错误呢?

注意 在第26行尝试获取非对象的属性

我不应该能够通过使用$car->make来访问对象的属性吗?

 'Audi',
        'model' => 'A4',
        'year' => '2014',
    ),
    array(
        'make' => 'Benz',
        'model' => 'c300',
        'year' => '2015',
    ),
    array(
        'make' => 'BMW',
        'model' => 'i8',
        'year' => '2016',
    ),
);
// 将$cars数组转换为对象
$cars = (object) $cars;
foreach ($cars as $car) {
    // 我不应该能够访问我的对象吗
    print $car->make . "";
}

0
0 Comments

将数组转换为对象是PHP中常见的操作。通常情况下,我们可以通过使用强制类型转换将数组转换为对象。然而,在某些情况下,我们希望将多维数组的内部数组转换为对象,而保持外部数组不变。本文将介绍为什么需要将数组转换为对象,以及如何实现这个目标。

在给出的示例中,$cars是一个多维数组,我们可以通过使用(对象)$cars的方式将其转换为对象。这种转换将创建一个包含内部数组的对象。然而,内部数组仍然保持为数组,而不是对象。我们希望的是将内部数组转换为对象,并保持外部数组不变。

为了实现这个目标,我们可以使用array_map函数。array_map函数可以将一个回调函数应用于数组的每个元素,并返回一个包含回调函数返回值的新数组。在这种情况下,我们可以定义一个回调函数,该函数将内部数组转换为对象,并将其应用于外部数组的每个元素。

下面是实现这个目标的代码:

$cars = array_map(function($array){
    return (object)$array;
}, $cars);

上述代码将通过将每个内部数组转换为对象,创建一个新的数组$cars。现在,我们已经成功地将数组转换为了对象。

下面是转换后的$cars数组的内容:

$cars = [
    {
        'make' => 'Audi',
        'model' => 'A4',
        'year' => '2014'
    },
    {
        'make' => 'Benz',
        'model' => 'c300',
        'year' => '2015'
    },
    {
        'make' => 'BMW',
        'model' => 'i8',
        'year' => '2016'
    }
];

通过使用array_map函数,我们成功地将多维数组的内部数组转换为了对象,并保持了外部数组的不变。这个方法可以帮助我们在需要将数组转换为对象时,实现我们的需求。

0