Home  >  Article  >  Backend Development  >  Convert php object to array

Convert php object to array

王林
王林Original
2023-05-11 09:30:07603browse

PHP provides many powerful language features and extensions, among which object-oriented programming is a widely used programming paradigm. In PHP, an object is a complex data type that contains various properties and methods. In development, we often need to convert objects into arrays for easy use in different scenarios. This article will explore how to convert PHP objects into arrays.

1. Methods of converting objects into arrays

In PHP, there are many ways to convert objects into arrays. Here are three methods:

  1. Use type conversion

This method is one of the simplest and most commonly used methods. In PHP, objects can be cast using the (array) operator. During the conversion process, the internal properties of the object will be added to the array. For example:

class Person {
    public $name = 'John';
    public $age = 25;
}

$person = new Person();
$array = (array) $person;

In the above code, a class named Person is instantiated into a $person object. Then cast the $person object to an array $array, which contains all properties and corresponding values ​​of the $person object.

  1. Use the get_object_vars function

The get_object_vars function can convert the object's attributes into an associative array. The key of the array is the attribute name and the value is the corresponding attribute value. For example:

class Person {
    public $name = 'John';
    public $age = 25;
}

$person = new Person();
$array = get_object_vars($person);

In the above code, a class named Person is instantiated into a $person object. Then call the get_object_vars function to convert the properties of the $person object into an associative array $array.

It should be noted that the get_object_vars function can only obtain the public attributes of the object, but this function cannot obtain private attributes and protected attributes.

  1. Use json_encode and json_decode

This method is more clever and can convert objects into arrays based on the encoding and decoding of JSON format. The specific implementation steps are as follows:

  1. Use the json_encode function to convert the object into a JSON string;
  2. Use the json_decode function to convert the JSON string into an array;
  3. Convert The resulting array is returned.

For example:

class Person {
    public $name = 'John';
    public $age = 25;
}

$person = new Person();
$json = json_encode($person);
$array = json_decode($json, true);

In the above code, a class named Person is instantiated as a $person object. Then use the json_encode function to convert the $person object into a JSON string $json, and then use the json_decode function to convert the JSON string $json into an array $array.

2. Precautions for converting objects into arrays

In the process of converting objects into arrays, you need to pay attention to some matters to avoid unexpected errors.

  1. Naming of attribute names

When converting an object into an array, the naming of attribute names must follow PHP naming conventions. Attribute names cannot start with a number, but must start with a letter or underscore, and can be followed by any combination of letters, numbers, and underscores. In addition, attribute names need to comply with PHP's variable naming rules and cannot use reserved keywords.

  1. Do not contain objects in the array

When converting objects into arrays, you should ensure that the array does not contain objects, otherwise it will easily occur during serialization and deserialization. question. If the array contains objects, it is recommended to convert the objects into arrays separately.

  1. For private properties and protected properties, additional processing is required

When using the get_object_vars function to convert an object into an array, please note that private properties and protected properties cannot Get, if you need to get private properties and protected properties, you can use reflection to dynamically get object properties. For example:

class Person {
    private $name = 'John';
    protected $age = 25;
}

$person = new Person();
$ref = new ReflectionObject($person);
$props = $ref->getProperties(ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED | ReflectionProperty::IS_PRIVATE);
$array = array();
foreach ($props as $prop) {
    $prop->setAccessible(true);
    $array[$prop->getName()] = $prop->getValue($person);
}

print_r($array);

In the above code, a class named Person is defined, which contains the private attribute $name and the protected attribute $age. Then use reflection to dynamically obtain the object properties and set the access level of the properties to accessible. Finally, save the attribute name and corresponding attribute value to the array $array.

3. Summary

In PHP, the need to convert objects into arrays is very common. This article describes three common methods, including casting, using the get_object_vars function, and using the json_encode and json_decode functions. When converting objects into arrays, special attention needs to be paid to the naming of attribute names, whether the array contains objects, and the handling of private attributes and protected attributes. Only by understanding these considerations can you use objects and arrays more smoothly.

The above is the detailed content of Convert php object to array. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn