En PHP, nous avons parfois besoin de convertir un objet en tableau pour faciliter nos opérations sur les données. Normalement, si le nom de l'attribut de l'objet est le même que la valeur clé du tableau, nous pouvons utiliser directement la fonction objet vers tableau, par exemple :
$array = (array) $obj; // $obj为对象,$array为数组
Cependant, si le nom de l'attribut de l'objet est irrégulier, par exemple , il y a des traits de soulignement dans le nom de l'attribut, des traits d'union ou des majuscules, etc. À ce stade, nous devons traiter manuellement les noms d'attribut et les convertir en noms de clés de tableau légaux. Ci-dessous, nous présentons plusieurs méthodes pour convertir des objets irréguliers en tableaux.
Méthode 1 : Utilisez la fonction get_object_vars()
La fonction get_object_vars() peut être utilisée pour obtenir tous les attributs et valeurs d'attribut de l'objet et renvoyer un tableau associatif. Nous pouvons utiliser cette fonction pour obtenir la liste des attributs de l'objet puis la traiter.
$obj = new stdClass(); $obj->user_name = '张三'; $obj->user_age = 20; $obj->{'user_city-name'} = '北京'; $arr = array(); $vars = get_object_vars($obj); foreach($vars as $key => $value){ $arr[str_replace('_', '-', $key)] = $value; } var_export($arr);
Dans l'exemple ci-dessus, nous utilisons la fonction get_object_vars() pour obtenir tous les attributs et valeurs d'attribut de l'objet, puis utilisons la boucle foreach pour parcourir et convertir les traits de soulignement dans les noms d'attribut en traits d'union. Le tableau converti final est le suivant :
array ( 'user_name' => '张三', 'user_age' => 20, 'user-city-name' => '北京', )
Notez que cette méthode traite uniquement les propriétés de l'objet et n'inclut pas les propriétés héritées.
Méthode 2 : Utilisez les fonctions json_encode() et json_decode()
Nous pouvons également utiliser les fonctions json_encode() et json_decode() pour convertir l'objet au format JSON, puis utiliser la fonction json_decode() pour convertir le format JSON dans un tableau.
$obj = new stdClass(); $obj->user_name = '张三'; $obj->user_age = 20; $obj->{'user_city-name'} = '北京'; $json_str = json_encode($obj); $arr = json_decode($json_str, true); foreach($arr as $key => $value){ $new_key = str_replace('_', '-', $key); unset($arr[$key]); $arr[$new_key] = $value; } var_export($arr);
Dans l'exemple ci-dessus, nous utilisons la fonction json_encode() pour convertir l'objet au format JSON, puis utilisons la fonction json_decode() pour reconvertir le format JSON en tableau. Utilisez ensuite une boucle foreach pour parcourir le tableau et convertir les traits de soulignement dans les noms d'attributs en traits d'union. Le tableau converti final est le même que celui de la première méthode.
Méthode 3 : Utilisez la fonction array_map()
La fonction array_map() peut appliquer une fonction de rappel à chaque élément du tableau et renvoyer un nouveau tableau. Nous pouvons utiliser cette fonction pour convertir les traits de soulignement dans les noms de propriétés en traits d'union.
$obj = new stdClass(); $obj->user_name = '张三'; $obj->user_age = 20; $obj->{'user_city-name'} = '北京'; $arr = (array) $obj; $arr = array_map(function($key){ return str_replace('_', '-', $key); }, array_keys($arr)); $arr = array_combine($arr, (array) $obj); var_export($arr);
Dans l'exemple ci-dessus, nous utilisons la fonction array_map pour convertir le trait de soulignement dans le nom de l'attribut en trait d'union, utilisons la fonction array_keys() pour obtenir la liste d'attributs de l'objet, puis utilisons la fonction array_combine() pour convertir le nom de l'attribut et la valeur de l'attribut dans un tableau. Le tableau converti final est le même que la première et la deuxième méthodes.
Résumé :
Lorsque nous devons convertir un objet en tableau et que nous rencontrons des noms d'attributs irréguliers, nous pouvons utiliser get_object_vars(), json_encode(), array_map() et d'autres fonctions pour le traiter. Grâce à ces méthodes, nous pouvons facilement convertir des objets irréguliers en tableaux réguliers pour faciliter nos opérations sur les données.
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!