Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中将数组转换为对象_Php_Arrays_Object - Fatal编程技术网

在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)