Maison >développement back-end >Problème PHP >Convertir la chaîne php en tableau d'objets tableau d'objets tableau d'objets

Convertir la chaîne php en tableau d'objets tableau d'objets tableau d'objets

王林
王林original
2023-05-06 10:09:07470parcourir

Dans le développement PHP, il est souvent nécessaire d'opérer sur des chaînes, et la conversion de chaînes en tableaux est l'une des exigences courantes. Dans le même temps, les objets tableau sont également des types de données souvent utilisés en développement. Par conséquent, la conversion de chaînes PHP en objets tableau objets tableau objets tableau tableaux est devenue l'une des compétences que les développeurs PHP doivent maîtriser.

Cet article présentera en détail comment convertir une chaîne PHP en tableau, comment convertir le tableau en objet, et enfin former un tableau d'objets tableau, et présentera comment effectuer des opérations de base sur ce tableau d'objets de tableau.

  1. String to Array

PHP a une fonction exploser() intégrée pour convertir une chaîne en tableau. La fonction éclater() divise une chaîne selon le délimiteur spécifié et renvoie un tableau contenant les sous-chaînes divisées.

Par exemple, le code suivant convertira une chaîne séparée par "," en un tableau :

$str = "apple,banana,orange";
$arr = explode(",", $str);
print_r($arr);

Sortie :

Array
(
    [0] => apple
    [1] => banana
    [2] => orange
)

Si aucun délimiteur est spécifié, le caractère espace est utilisé par défaut.

  1. Array to object

En PHP, vous pouvez utiliser la syntaxe de transtypage pour convertir un tableau en objet. Ce processus définira chaque élément du tableau comme attribut de l'objet. Le nom de l'attribut est la clé du tableau et la valeur de l'attribut est la valeur correspondant à la clé correspondante du tableau.

Par exemple, le code suivant convertira un tableau en objet correspondant :

$arr = array('name' => 'Tom', 'age' => 18, 'gender' => 'male');
$obj = (object)$arr;
echo $obj->name; //输出Tom
echo $obj->age; //输出18
echo $obj->gender; //输出male

Il est à noter qu'après avoir converti le tableau en objet, le nom de l'attribut dans le object Il est sensible à la casse.

  1. Objet en tableau

Un objet peut être converti en tableau en forçant l'objet dans un tableau. Ce processus convertira tous les attributs de l'objet en paires clé-valeur dans le tableau. Le nom de l'attribut est la clé du tableau et la valeur de l'attribut est la valeur correspondant à la clé correspondante du tableau.

Par exemple, le code suivant convertira un objet dans le tableau correspondant :

class Person {
    public $name;
    public $age;
    public $gender;
}

$person = new Person();
$person->name = 'Tom';
$person->age = 18;
$person->gender = 'male';

$arr = (array)$person;
print_r($arr);

Sortie :

Array
(
    [name] => Tom
    [age] => 18
    [gender] => male
)

Il est à noter que lorsque Après l'objet est converti en tableau, le nom de clé dans le tableau est le même que le nom de propriété de l'objet et le symbole d'accès à la propriété ($) précède le nom de clé.

  1. Composer un tableau d'objets de tableau

Après avoir converti la chaîne en tableau, utilisez la conversion de type forcée pour convertir le tableau en objet et puis formez un tableau d'objets de tableau.

$str = "name:Tom,age:18,gender:male;name:Lucy,age:21,gender:female;";
$data_arr = explode(";",$str);

function arrayToObject($arr){
    if(gettype($arr) != 'array'){
        return;
    }
    foreach ($arr as $key => $value) {
        if(is_array($value)){
            $arr[$key] = arrayToObject($value);
        }
    }
    return (object) $arr;
}

function objectToArray($obj){
    $obj = (array) $obj;
    foreach ($obj as $k => $v){
        if(gettype($v) == 'resource') return;
        if(gettype($v) == 'object' || gettype($v) == 'array')
            $obj[$k] = (array) objectToArray($v);
    }
    return $obj;
}

$arr = array();
foreach ($data_arr as $data_item) {
    $data_item_arr = explode(",",$data_item);
    $data_obj = new stdClass();
    foreach ($data_item_arr as $item) {
        $item_arr = explode(":",$item);
        if(count($item_arr) == 2){
            $key = $item_arr[0];
            $value = $item_arr[1];
            $data_obj->$key = $value;
        }
    }
    $data_arr[] = $data_obj;
}

$arr_obj = arrayToObject($arr);
print_r($arr_obj);

$arr2 = objectToArray($arr_obj);
print_r($arr2);

Sortie :

Array
(
    [0] => stdClass Object
        (
            [name] => Tom
            [age] => 18
            [gender] => male
        )

    [1] => stdClass Object
        (
            [name] => Lucy
            [age] => 21
            [gender] => female
        )

)
Array
(
    [0] => Array
        (
            [name] => Tom
            [age] => 18
            [gender] => male
        )

    [1] => Array
        (
            [name] => Lucy
            [age] => 21
            [gender] => female
        )

)
  1. Opérations sur un tableau d'objets de tableau

Après avoir obtenu le tableau d'objets de tableau, nous pouvons y effectuer des opérations courantes, telles que l'ajout, la suppression, le filtrage, etc.

Ajouter un élément :

$data_obj1 = new stdClass();
$data_obj2 = new stdClass();
$data_obj1->name = 'Tom';
$data_obj2->name = 'Lucy';
$data_arr[] = $data_obj1;
$data_arr[] = $data_obj2;

Supprimer un élément :

unset($data_arr[0]);

Élément de filtrage :

$result_arr = array_filter($data_arr,function ($item){
    return $item->age > 20;
});
print_r($result_arr);

L'opération ci-dessus entraînera résultats plus anciens que Informations sur les personnes âgées de 20 ans.

Grâce à l'introduction de cet article, vous devriez déjà savoir comment convertir une chaîne PHP en un tableau d'objets tableau d'objets tableau d'objets, et vous pouvez y effectuer des opérations de base. Cette compétence est très utile dans le développement PHP. J'espère que tout le monde pourra l'étudier sérieusement et l'appliquer au développement réel.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn