Que signifie $$ (dollar dollar ou double dollar) en PHP?


116

Un exemple est une déclaration de variable dans une fonction:

global $$link;

Que veut $$dire?



51
il vous montre combien $$$ vous obtiendrez pour maintenir le système;)
RCIX


C'est une dé-référence basée sur le nom. Quelque chose comme ${$link}à Bash
Ondra Žižka

Réponses:


183

Une syntaxe telle que celle $$variableappelée Variable Variable .


Par exemple, si vous considérez cette partie du code:

$real_variable = 'test';
$name = 'real_variable';
echo $$name;

Vous obtiendrez la sortie suivante:

test


Ici :

  • $real_variable contient un test
  • $name contient le nom de votre variable: 'real_variable'
  • $$namesignifie " la variable dans laquelle son nom est$name "
    • Lequel est $real_variable
    • Et a la valeur 'test'



EDIT après le commentaire de @ Jhonny:

Faire un $$$?
Eh bien, la meilleure façon de savoir est d'essayer ;-)

Alors, essayons cette partie du code:

$real_variable = 'test';
$name = 'real_variable';
$name_of_name = 'name';

echo $name_of_name . '<br />';
echo $$name_of_name . '<br />';
echo $$$name_of_name . '<br />';

Et voici le résultat que j'obtiens:

name
real_variable
test

Alors, je dirais que oui, vous pouvez le faire$$$ ;-)


10
Bien que je convienne que cela peut être utile, la plupart du temps, il est préférable d'utiliser de toute façon des tableaux.
o0 '.

alors est-ce la même chose que de faire $ {$ value}?
Chaim

3
@Chaim: oui c'est ;; sauf que, dans certains cas, les {et }sont obligatoires (il y a un exemple dans le manuel à ce sujet)
Pascal MARTIN

23

Le $ interne résout la variable a en une chaîne et l'externe résout une variable par cette chaîne.

Alors, considérons cet exemple

$inner = "foo";
$outer = "inner";

La variable:

$$outer

serait égal à la chaîne "foo"


Même si la réponse acceptée est beaucoup plus large (y compris les cas de test). Cette explication a clarifié les choses pour moi
MariusJP

13

C'est une variable de variable .

<?php
$a = 'hello';
$$a = 'world'; // now makes $hello a variable that holds 'world'
echo "$a ${$a}"; // "hello world"
echo "$a $hello"; // "hello world"
?>

7

Il crée un nom de variable dynamique. Par exemple

$link = 'foo';
$$link = 'bar';    // -> $foo = 'bar'
echo $foo;
// prints 'bar'

(également appelé variable variable )


4

Je ne veux pas répéter après les autres mais il y a un risque en utilisant $$:)

$a  = '1';
$$a =  2; // $1 = 2 :)

Alors utilisez-le avec la tête. :)


1

Il évalue le contenu d'une variable comme le nom d'une autre. Fondamentalement, il vous donne la variable dont le nom est stocké $link.


1

cela a fonctionné pour moi (mettre entre crochets):

$aInputsAlias = [
        'convocatoria'   => 'even_id',
        'plan'           => 'acev_id',
        'gasto_elegible' => 'nivel1',
        'rubro'          => 'nivel2',
        'grupo'          => 'nivel3',
    ];

    /* Manejo de los filtros */

    foreach(array_keys($aInputsAlias) as $field)
    {
        $key = $aInputsAlias[$field];

        ${$aInputsAlias[$field]} = $this->request->query($field) ? $this->request->query($field) : NULL;
    }
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.