将数组转换为对象在PHP中
将数组转换为对象在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 . ""; }
将数组转换为对象是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函数,我们成功地将多维数组的内部数组转换为了对象,并保持了外部数组的不变。这个方法可以帮助我们在需要将数组转换为对象时,实现我们的需求。