插件窝 干货文章 php数组如何循环转为对象

php数组如何循环转为对象

object 数组 array 方法 60    来源:    2025-03-16

在PHP中,你可以使用 foreach 循环将数组转换为对象。PHP 提供了多种方式来实现这一点,以下是几种常见的方法:

方法1:使用 foreach 循环手动转换

你可以使用 foreach 循环遍历数组,并将每个元素赋值给对象的属性。

$array = [
    'name' => 'John',
    'age' => 30,
    'city' => 'New York'
];

$object = new stdClass();

foreach ($array as $key => $value) {
    $object->$key = $value;
}

print_r($object);

输出:

stdClass Object
(
    [name] => John
    [age] => 30
    [city] => New York
)

方法2:使用 json_decodejson_encode

你可以先将数组转换为 JSON 字符串,然后再将 JSON 字符串解码为对象。

$array = [
    'name' => 'John',
    'age' => 30,
    'city' => 'New York'
];

$object = json_decode(json_encode($array));

print_r($object);

输出:

stdClass Object
(
    [name] => John
    [age] => 30
    [city] => New York
)

方法3:使用 (object) 强制类型转换

你可以直接将数组强制转换为对象。

$array = [
    'name' => 'John',
    'age' => 30,
    'city' => 'New York'
];

$object = (object) $array;

print_r($object);

输出:

stdClass Object
(
    [name] => John
    [age] => 30
    [city] => New York
)

方法4:使用 array_mapstdClass

如果你有一个多维数组,并且希望将每个子数组都转换为对象,可以使用 array_map

$array = [
    ['name' => 'John', 'age' => 30],
    ['name' => 'Jane', 'age' => 25]
];

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

print_r($objects);

输出:

Array
(
    [0] => stdClass Object
        (
            [name] => John
            [age] => 30
        )

    [1] => stdClass Object
        (
            [name] => Jane
            [age] => 25
        )
)

总结

  • 方法1 适用于需要手动控制转换过程的场景。
  • 方法2 适用于需要快速将数组转换为对象的场景。
  • 方法3 是最简单的方式,适用于简单的数组转对象。
  • 方法4 适用于多维数组的转换。

根据你的具体需求选择合适的方法。