Utiliser des accolades avec des noms de variables dynamiques en PHP
P粉717595985
2023-08-29 12:05:01
<p>J'essaie d'utiliser des noms de variables dynamiques (je ne suis pas sûr de leur véritable nom), mais quelque chose comme ceci : </p>
<pre class="brush:php;toolbar:false;">for($i=0; $i<=2; $i++) {
$("fichier" . $i) = fichier($filelist[$i]);
}
var_dump($file0);</pre>
<p>renvoie <code>null</code>, ce qui me dit que cela ne fonctionne pas. Je ne sais pas quelle syntaxe ou quelle technologie je recherche, ce qui rend la recherche difficile. <code>$filelist</code> a été défini auparavant. </p>
Aperçu
En PHP, il suffit d'ajouter un
$
supplémentaire devant une variable pour la rendre dynamique :Bien que je ne le recommande pas, vous pouvez même associer ce comportement :
Vous pouvez mais n'êtes pas obligé de placer
$variableName
放在{}
entre :L'utilisation de
{}
n'est forcée que lorsque le nom de la variable lui-même est une combinaison de plusieurs valeurs, comme ceci :Cependant, il est recommandé de toujours utiliser
{}
car il est plus lisible.Différence entre PHP5 et PHP7
Une autre raison de toujours utiliser
{}
est que PHP5 et PHP7 gèrent les variables dynamiques légèrement différemment, ce qui peut conduire à des résultats différents dans certains cas.En PHP7, les variables dynamiques, les propriétés et les méthodes seront désormais évaluées strictement de gauche à droite, plutôt que les cas spéciaux mixtes de PHP5. L'exemple suivant montre comment l'ordre d'évaluation change.
Situation 1 :
$$foo['bar']['baz']
${$foo['bar']['baz']}
${$foo}['bar']['baz']
Scénario 2 :
$foo->$bar['baz']
$foo->{$bar['baz']}
$foo->{$bar}['baz']
Scénario 3 :
$foo->$bar['baz']()
$foo->{$bar['baz']}()
$foo->{$bar}['baz']()
Situation 4 :
Foo::$bar['baz']()
Foo::{$bar['baz']}()
Foo::{$bar}['baz']()
Enveloppez-les dans
{}
:Exemple pratique
Utiliser
${}
est un moyen de créer des variables dynamiques, exemple simple :