插件窝 干货文章 php对象转数组是什么

php对象转数组是什么

数组 转换 属性 array 127    来源:    2025-03-16

在PHP中,对象转数组是指将一个对象实例转换为一个数组的过程。这在某些情况下非常有用,比如当你需要将对象的数据以数组的形式进行处理或传递给其他函数时。

方法1:使用 (array) 强制类型转换

你可以使用 (array) 强制类型转换将对象转换为数组。这种方法会将对象的属性转换为数组的键值对。

class MyClass {
    public $name = "John";
    protected $age = 30;
    private $salary = 5000;
}

$obj = new MyClass();
$array = (array) $obj;

print_r($array);

输出结果:

Array
(
    [name] => John
    [*age] => 30
    [MyClasssalary] => 5000
)

注意:protectedprivate 属性的键名会被修改,protected 属性的键名前会加上 *private 属性的键名前会加上类名。

方法2:使用 json_encodejson_decode

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

class MyClass {
    public $name = "John";
    protected $age = 30;
    private $salary = 5000;
}

$obj = new MyClass();
$json = json_encode($obj);
$array = json_decode($json, true);

print_r($array);

输出结果:

Array
(
    [name] => John
)

注意:这种方法只会转换对象的公共属性(public),protectedprivate 属性不会被包含在结果中。

方法3:使用 get_object_vars 函数

get_object_vars 函数可以获取对象的所有公共属性,并将其转换为数组。

class MyClass {
    public $name = "John";
    protected $age = 30;
    private $salary = 5000;
}

$obj = new MyClass();
$array = get_object_vars($obj);

print_r($array);

输出结果:

Array
(
    [name] => John
)

注意:get_object_vars 只会返回对象的公共属性。

方法4:自定义方法

如果你需要将对象的 protectedprivate 属性也转换为数组,可以定义一个自定义方法来实现。

class MyClass {
    public $name = "John";
    protected $age = 30;
    private $salary = 5000;

    public function toArray() {
        return get_object_vars($this);
    }
}

$obj = new MyClass();
$array = $obj->toArray();

print_r($array);

输出结果:

Array
(
    [name] => John
    [age] => 30
    [salary] => 5000
)

总结

  • 使用 (array) 强制类型转换可以快速将对象转换为数组,但 protectedprivate 属性的键名会被修改。
  • 使用 json_encodejson_decode 可以方便地将对象转换为数组,但只会包含公共属性。
  • 使用 get_object_vars 可以获取对象的公共属性并转换为数组。
  • 自定义方法可以灵活地控制哪些属性被转换为数组。

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