Maison  >  Questions et réponses  >  le corps du texte

Utiliser des accolades avec des noms de variables dynamiques en PHP

<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>
P粉717595985P粉717595985389 Il y a quelques jours434

répondre à tous(2)je répondrai

  • P粉588660399

    P粉5886603992023-08-30 10:02:10

    Aperçu

    En PHP, il suffit d'ajouter un $ supplémentaire devant une variable pour la rendre dynamique :

    $$variableName = $value;

    Bien que je ne le recommande pas, vous pouvez même associer ce comportement :

    $$$$$$$$DoNotTryThisAtHomeKids = $value;

    Vous pouvez mais n'êtes pas obligé de placer $variableName 放在 {} entre :

    ${$variableName} = $value;

    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 :

    ${$variableNamePart1 . $variableNamePart2} = $value;

    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']

    • Explication PHP5 :${$foo['bar']['baz']}
    • Explication PHP7 :${$foo}['bar']['baz']

    Scénario 2 :$foo->$bar['baz']

    • Explication PHP5 :$foo->{$bar['baz']}
    • Explication PHP7 :$foo->{$bar}['baz']

    Scénario 3 :$foo->$bar['baz']()

    • Explication PHP5 :$foo->{$bar['baz']}()
    • Explication PHP7 :$foo->{$bar}['baz']()

    Situation 4 :Foo::$bar['baz']()

    • Explication PHP5 :Foo::{$bar['baz']}()
    • Explication PHP7 :Foo::{$bar}['baz']()

    répondre
    0
  • P粉043295337

    P粉0432953372023-08-30 09:41:31

    Enveloppez-les dans {} :

    ${"file" . $i} = file($filelist[$i]);

    Exemple pratique


    Utiliser ${} est un moyen de créer des variables dynamiques, exemple simple :

    ${'a' . 'b'} = 'hello there';
    echo $ab; // hello there

    répondre
    0
  • Annulerrépondre