0
votes

Comment puis-je convertir un objet en une matrice en PHP

Comment puis-je convertir un objet en une matrice en PHP? Par exemple, ici, je veux convertir la variable de résultats $ en une matrice. Voici le code:

$statement = $adapter->createStatement('SELECT * FROM `users`');
$result    = $statement->execute();
$result = new JsonModel($result);
$result = array($result);
var_dump($result);
return ($result);
```

It produces the following output. 
array(1) { [0]=> object(Laminas\View\Model\JsonModel)#160 (8) { ["captureTo":protected]=> NULL ["jsonpCallback":protected]=> NULL ["terminate":protected]=> bool(true) ["children":protected]=> array(0) { } ["options":protected]=> array(0) { } ["template":protected]=> string(0) "" ["variables":protected]=> array(4) { [0]=> array(3) { ["id"]=> string(1) "1" ["name"]=> string(13) "J. K. Rowling" ["deleted"]=> string(1) "0" } [1]=> array(3) { ["id"]=> string(1) "2" ["name"]=> string(19) "George R. R. Martin" ["deleted"]=> string(1) "0" } [2]=> array(3) { ["id"]=> string(1) "3" ["name"]=> string(16) "J. R. R. Tolkien" ["deleted"]=> string(1) "0" } [3]=> array(3) { ["id"]=> string(1) "4" ["name"]=> string(12) "Donald Trump" ["deleted"]=> string(1) "0" } } ["append":protected]=> bool(false) } } 


11 commentaires

$ résultat = (tableau) Résultat; ou même $ résultat = (tableau) Nouveau JSONModel ($ données);


@AbracAdaver Il a dit qu'il avait essayé ça.


Si la catégorie ne fonctionne pas, la classe a probablement des propriétés privées et des méthodes d'accesseur pour les extraire. Vous devrez écrire un code personnalisé qui obtient toutes les propriétés que vous souhaitez utiliser ces méthodes et la met dans un tableau. Il n'y a pas de réponse générale à cela.


@Barmar, ils ne l'ont pas fait correctement. Ou une meilleure question est ce que cela ne fonctionne pas signifie.


Montrez votre code qui utilise la typée et afficher un var_dump () du résultat.


$ déclaration = $ adaptateur-> Créditestatement ("Sélectionner * à partir des utilisateurs"); $ résultat = $ déclaration-> exécuter (); $ résultat = nouveau JSONModel ($ Résultat); $ résultat = (tableau) Résultat; retour ($ résultat); Si je le tape, il montre une erreur. "Laminas \ View \ Renderer \ PHPRenderer :: Render: Impossible de rendre Modèle" Resource / Resource / Get-List "; Le résolveur n'a pas pu résoudre à un fichier"


@Mahmudulhasan met à jour votre question au lieu de coller le code dans le commentaire.


Vous devrez peut-être utiliser des méthodes de laminas pour le faire.


Je pense que la réponse à cette question dépend fortement de ce que ressemble à Jsonmodel et comment vous voulez que votre tableau ressemble à.


Salut c'est comme ça que ressemble le jsonmodel. ** [{"ID": "1", "nom": "JK Rowling", "Supprimé": "0"}, {"ID": "2", "Nom": "George Rr Martin", " supprimé ":" 0 "}, {" id ":" 3 "," nom ":" JRR Tolkien "," supprimé ":" 0 "}, {" ID ":" Nom ":" Nom ":" Donald Trump "," Supprimé ":" 0 "}] ** Je les veux comme une matrice associative. Désolé pour ma question impure.


Pls ne pas essayer de jeter un tableau à JSON à un objet quelconque. Utilisez votre logique Framework (Laminas) ou peut-être aller avec PDO (paramètre $ class_name dans la récupération des méthodes)


3 Réponses :


0
votes

Le truc sale serait ...

$result    = $statement->execute();
$Array = json_decode(json_encode($result),true);


2 commentaires

Dans ce cas, il affiche ce message d'erreur: Laminas \ View \ Renderer \ PHPRenderer :: Render: impossible de rendre le modèle "Resource / Resource / Get-List"; Le résolveur n'a pas pu résoudre à un fichier


Cela ressemble à une erreur frontale non une erreur de structure de données. Vous devrez peut-être inclure davantage de votre code pour que nous puissions vous aider.



0
votes

Tout simplement, nous pouvons obtenir un objet pour vous rendre comme ceci:

$ résultat = $ déclaration-> exécuter (); $ Array = (tableau) $ résultat;


0 commentaires

0
votes

Il y a quelques hydrateurs disponibles dans le monde PHP. Vous pouvez les utiliser autonome ou avec une doctrine comme une orje. Par exemple, regardez ceci:

  1. https://packagist.org/packages/laminas/laminas-hydrator
  2. https://packagist.org/packages/doctrine/doctrine-module

    Si vous utilisez des laminas sans dotrine, j'irais avec 1


0 commentaires