首先,让我们看一下 get_object_vars 函数的使用方法。该函数接受一个对象参数,并返回一个包含该对象中所有公共成员变量的关联数组,其中数组的键是成员变量的名称,数组的值是成员变量的值。以下是一个使用 get_object_vars 函数的示例代码:
class person { public $name; public $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; }}$person = new person("john", 25);$personarray = get_object_vars($person);print_r($personarray);
在上面的示例代码中,我们首先定义了一个 person 类,并在构造函数中初始化 name 和 age 变量。接下来,我们创建了一个 person 对象 $person 并将其赋给 $personarray 变量。最后,我们使用 print_r 函数打印了 $personarray 数组的内容。
运行上面的代码,我们将得到如下输出:
array( [name] => john [age] => 25)
如上所述,get_object_vars 函数只返回公共成员变量,因此无法获取对象中的私有成员变量。如果我们需要获取对象中的所有成员变量,我们可以使用 php 反射机制中的 getproperties 方法。
以下是一个使用 reflectionclass 类中的 getproperties 方法将对象的私有成员变量转换成数组的示例代码:
class person { private $name; private $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } private function introduce() { echo "my name is " . $this->name . " and my age is " . $this->age . "."; }}$person = new person("john", 25);$reflectedperson = new reflectionclass(get_class($person));$properties = $reflectedperson->getproperties(reflectionproperty::is_private);$personarray = [];foreach ($properties as $property) { $property->setaccessible(true); $personarray[$property->getname()] = $property->getvalue($person);}print_r($personarray);
在上面的示例代码中,我们定义了一个名为 person 的类,并在构造函数中初始化私有变量 $name 和 $age。接下来,我们创建了一个 person 对象 $person。
我们使用 reflectionclass 类获取 $person 的类名,并通过类名创建一个反射类的实例 $reflectedperson。我们使用 getproperties 方法获取 $person 类中所有的私有成员变量,并将这些变量存储在 $properties 变量中。
在循环中,我们首先使用 setaccessible 方法将私有成员变量设置为可访问。接下来,我们使用 getname 方法获取变量的名称,并使用 getvalue 方法获取该变量的值。最后,我们将变量名和变量值存储在 $personarray 数组中。
运行上面的代码,我们将得到如下输出:
array( [name] => john [age] => 25)
在许多情况下,将对象数据转换成数组是必要的。使用 php 内置的 get_object_vars 函数和反射机制中的 getproperties 方法,我们可以很轻松地完成此操作。
以上就是php把object数据转成数组的详细内容。
