Maison  >  Article  >  développement back-end  >  Comment convertir efficacement un objet PHP stdClass en tableau ?

Comment convertir efficacement un objet PHP stdClass en tableau ?

DDD
DDDoriginal
2024-11-20 12:10:10214parcourir

How to Efficiently Convert a PHP stdClass Object to an Array?

Conversion d'un stdClass en tableau en PHP

Question :

J'ai besoin de convertir un objet PHP stdClass en tableau . Cependant, les tentatives utilisant le casting (array), json_decode(true) et json_decode() ont abouti à un tableau vide. Comment puis-je effectuer cette conversion efficacement ?

Réponse :

Méthode Lazy One-Liner

Pour des performances légèrement compromises, vous pouvez exploiter le JSON méthodes pour réaliser cette conversion de manière concise :

$array = json_decode(json_encode($booking), true);

Cette méthode encode d'abord l'objet dans une chaîne JSON, puis le décode à nouveau en un tableau.

Conversion de stdClass en Array

$array = (array) json_decode(json_encode($booking));

Cette approche renvoie un tableau indexé sans conserver les noms de propriété.

Conversion de stdClass en tableau associatif

$array = json_decode(json_encode($booking), true);

En passant true comme deuxième argument à json_decode, vous pouvez convertissez l'objet en un tableau associatif, en préservant les noms de propriétés.

Fonction personnalisée (récursive)

Si les performances sont critiques, vous pouvez implémenter une fonction récursive personnalisée pour convertir l'objet en tableau :

function object_to_array($object) {
  if (is_object($object)) {
    $object = get_object_vars($object);
  }

  if (is_array($object)) {
    return array_map(__FUNCTION__, $object);
  } else {
    return $object;
  }
}

$array = object_to_array($booking);

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