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?

chicane
la source
51
il vous montre combien $$$ vous obtiendrez pour maintenir le système;)
RCIX
2
(connexe) Que signifie ce symbole en PHP
Gordon
C'est une dé-référence basée sur le nom. Quelque chose comme ${$link}à Bash
Ondra Žižka
variables variables
Kris Roofe

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$$$ ;-)

Pascal MARTIN
la source
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"

Riches
la source
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"
?>
Anthony Forloney
la source
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 )

Félix Kling
la source
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. :)

hsz
la source
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.

Zach
la source
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;
    }
Diego Santa Cruz Mendezú
la source