php怎么把对象变成数组
时间 : 2023-03-25 10:41:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在 PHP 中,将对象转换成数组通常使用两个函数:`get_object_vars()` 和 `json_decode()`。下面分别介绍这两种方法的用法。

## get_object_vars() 函数

`get_object_vars()` 函数可以获取对象的属性和属性值,并返回一个关联数组。在使用这个函数时,需要先创建一个对象,然后将这个对象传递给 `get_object_vars()` 函数即可。

例如,我们有一个 `Person` 类:

```php

class Person {

public $name;

public $age;

public function __construct($name, $age) {

$this->name = $name;

$this->age = $age;

}

}

我们可以将一个 `Person` 对象转换成数组,如下所示:

```php

$person = new Person('John Doe', 30);

$array = get_object_vars($person);

print_r($array);

输出结果为:

Array

(

[name] => John Doe

[age] => 30

)

## json_decode() 函数

`json_decode()` 函数可以将 JSON 格式的字符串转换成 PHP 数组或对象。我们可以先将一个对象转换成 JSON 字符串,然后再将其转换成 PHP 数组。

例如,我们有一个 `Person` 类(与上方示例相同):

```php

class Person {

public $name;

public $age;

public function __construct($name, $age) {

$this->name = $name;

$this->age = $age;

}

}

我们可以将一个 `Person` 对象转换成数组,如下所示:

```php

$person = new Person('John Doe', 30);

$json = json_encode($person);

$array = json_decode($json, true);

print_r($array);

输出结果为:

Array

(

[name] => John Doe

[age] => 30

)

需要注意的是,`json_decode()` 函数需要传递第二个参数 `true`,才能将 JSON 字符串转换成 PHP 数组。如果不加这个参数,`json_decode()` 函数将返回一个 PHP 对象,而不是数组。

综上所述,这两种方法都可以将 PHP 对象转换成数组。不同的是,`get_object_vars()` 函数是直接返回对象的属性和属性值,而 `json_decode()` 函数是先将对象转换成 JSON 字符串,再转换成 PHP 数组。需要根据具体情况选择使用哪一种方法。

在 PHP 中,对象是一个非常常见的数据类型。在与对象交互时,我们有时需要将其转换为数组,以便更方便地操作数据。

将对象转换成数组是一个非常简单的过程。我们只需要使用 PHP 内置的函数 `get_object_vars()`,将对象传递给该函数,函数就会返回所有对象属性的数组。以下是一个示例:

```php

class Person {

public $name;

public $age;

public $gender;

function __construct($name, $age, $gender) {

$this->name = $name;

$this->age = $age;

$this->gender = $gender;

}

}

$person = new Person("John", 25, "male");

$personArray = get_object_vars($person);

print_r($personArray);

输出结果:

Array

(

[name] => John

[age] => 25

[gender] => male

)

在上面的示例中,我们首先定义了一个 `Person` 类。该类有三个属性:`name`、`age` 和`gender`,并且我们定义了一个构造函数,它可以在实例化对象时分配这些属性的值。

然后,我们使用 `new` 关键字创建了一个新的 `Person` 对象,并将其分配给 `$person` 变量。接下来,我们使用 `get_object_vars()` 函数将 `$person` 对象转换为数组,并将结果分配给 `$personArray` 变量。最后,我们使用 `print_r()` 函数输出 `$personArray` 数组的内容。

需要注意的是,`get_object_vars()` 函数只会返回公共属性(public)的值,对于受保护的属性(protected)和私有的属性(private),我们需要使用类的方法来获取它们的值。例如:

```php

class Person {

public $name;

protected $age;

private $gender;

function __construct($name, $age, $gender) {

$this->name = $name;

$this->age = $age;

$this->gender = $gender;

}

function getAge() {

return $this->age;

}

function getGender() {

return $this->gender;

}

}

$person = new Person("John", 25, "male");

$personArray = [

"name" => $person->name,

"age" => $person->getAge(),

"gender" => $person->getGender()

];

print_r($personArray);

输出结果:

Array

(

[name] => John

[age] => 25

[gender] => male

)

在这个示例中,我们定义了一个 `getAge()` 和一个 `getGender()` 方法,它们分别返回 `$age` 和 `$gender` 属性的值。在创建 `$personArray` 数组时,我们使用这两个方法来获取受保护属性和私有属性的值。

总的来说,将对象转换为数组是一个常见的操作,它方便我们处理数据。在 PHP 中,我们可以使用 `get_object_vars()` 函数来轻松地完成这个任务,但是对于受保护的属性和私有属性,我们需要在类中定义相应的公共方法来获取它们的值。