PHP les Variables avec la clé du tableau de
Me demandais si il ya un moyen de contourner cela (ou si c'est encore possible).
J'ai donc une section de code semblable à cela. J'ai une chaîne, avec une valeur qui contient des crochets, similaires à ceux utilisés lors de l'accès à un tableau de clés. Je veux créer cette clé du tableau en utilisant les chaînes de valeur. J'espère que ce code fait un peu plus de sens de ce que je veux dire.
//String that has a value similar to an array key
$string = 'welcome["hello"]';
$$string = 'thisworks';
//I could then print the array keys value like this
print( $welcome["hello"] );
//This would hopefully output 'thisworks'.
Ne semble pas s'il fonctionne correctement, cependant. Est-il possible (ou sinon, comment puis-je aller à ce sujet)?
- Êtes-vous essayer de parser JSON, peut-être? Décrire l'endroit où ces données sont à venir à partir d'un peu plus, si vous le pouvez.
- utiliser un tableau depuis le début, alors vous n'avez pas ces problèmes.
- Ne pas utiliser JSON. C'est une version très simplifiée de ce qui se passe vraiment, mais dans l'essence multi-dimensions des tableaux sont utilisés pour construire une nouvelle gamme d'options. Actuellement, je suis en utilisant des regexp pour détecter si la chaîne contient des crochets, et si elle le fait, une instruction if n'est une charge de trucs pour créer un tableau hors de lui. Comme vous pouvez le deviner, en essayant de faire la méthode ci-dessus travail permettrait de sauver tous de si la vérification, et à travailler pour les deux options qui ne contiennent pas de crochets et de ceux qui le font.
- Si vous montrez votre code, je suis sûr que beaucoup mieux suggestion peut être donnée à vous. Si vraiment vous cherchez quelque chose qui correspond à la besoins: cela a été demandé avant (et réponse). stackoverflow.com/questions/7003559/...
- Peut-être vous pouvez hack (étendre) ce Kohana classe pour répondre à vos critères.
- Merci @hakre pour ce lien, il est très utile. Je vais aussi regarder la Kohanna classe suggestion, semble intéressant. Merci à tous les deux!
Vous devez vous connecter pour publier un commentaire.
L'exemple suivant est un exemple à la suite de votre nom de variable syntaxe qui résout les membres du groupe ainsi:
Avec la mise en œuvre suivants:
Que vous ne pouvez pas surcharger les variables en PHP, vous êtes limité à l'expressivité de PHP ici, il n'y a pas d'écrire contexte pour les références à des variables comme valeurs de retour de fonction, ce qui exige en outre l'aliasing:
Si quelque chose comme cela ne convient pas à vos besoins, vous avez besoin de patch PHP et si pas une option, PHP ne propose pas les fonctionnalités de la langue que vous cherchez.
Voir ainsi la question connexe: utiliser des chaînes à accès (potentiellement important) les tableaux multidimensionnels.
use
clause dans un objet. C'est principalement le code que vous recherchez.Dans variables caractères dans une chaîne de caractères traités littéralement. Ils ne sont pas interpréter ce qui est à l'intérieur de la chaîne. Donc
[]
caractères dans le$string
n'est pas considéré comme la matrice de notation. C'est plutôt traitée comme une partie du nom de la variable.après l'exécution de
$$string = 'thisworks';
PHP crée une variable du nom dewelcome["hello"]
littéralement avec la valeur fixéethisworks
.Imprimer utiliser cette notation,
Non, vous ne pouvez pas le faire de telle façon.
Alternativement, vous pouvez définir la variable de référence à l'aide de
et ensuite utiliser
pour le réglage de l'élément de contenu.
Ce serait plus correct et même de façon plus rapide pour le réglage des éléments de tableau.
Vous pouvez utiliser la fonction eval, bien que je ne le recommande pas dans un environnement de production, il a ses avantages.