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) } }
3 Réponses :
Le truc sale serait ...
$result = $statement->execute(); $Array = json_decode(json_encode($result),true);
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 b>
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.
Tout simplement, nous pouvons obtenir un objet pour vous rendre comme ceci: p>
$ résultat = $ déclaration-> exécuter (); $ Array = (tableau) $ résultat; p>
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: p>
Si vous utilisez des laminas sans dotrine, j'irais avec 1 p>
$ résultat = (tableau) Résultat; code> ou même$ résultat = (tableau) Nouveau JSONModel ($ données); code>@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 i> signifie.
Montrez votre code qui utilise la typée et afficher un
var_dump () code> 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); code> 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 code> 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)