¿Qué significa $$ (dólar dólar o dólar doble) en PHP?


116

El ejemplo es una declaración de variable dentro de una función:

global $$link;

¿Qué $$significa?



50
le muestra cuánto $$$ obtendrá por mantener el sistema;)
RCIX


Es una desreferencia basada en el nombre. Algo así como ${$link}en Bash
Ondra Žižka

Respuestas:


182

Una sintaxis como la que $$variablese llama Variable Variable .


Por ejemplo, si considera esta parte del código:

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

Obtendrá el siguiente resultado:

test


Aquí :

  • $real_variable contiene prueba
  • $name contiene el nombre de su variable: 'real_variable'
  • $$namesignifica " la variable que tiene su nombre contenido en$name "
    • Cual es $real_variable
    • Y tiene el valor 'test'



EDITAR después del comentario de @ Jhonny:

Haciendo un $$$?
Bueno, la mejor forma de saberlo es intentarlo ;-)

Entonces, probemos esta parte del código:

$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 />';

Y aquí está la salida que obtengo:

name
real_variable
test

Entonces, yo diría que sí, puedes hacerlo$$$ ;-)


10
Si bien estoy de acuerdo en que puede ser útil, la mayoría de las veces es mejor usar matrices de todos modos.
o0 '.

entonces, ¿es lo mismo que hacer $ {$ value}?
Jaim

3
@Chaim: sí lo es ;; excepto que, en algunos casos, el {y }son necesarios (hay un ejemplo en el manual de eso)
Pascal MARTIN

23

El $ interno resuelve la variable a en una cadena, y el externo resuelve una variable por esa cadena.

Entonces, considere este ejemplo

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

La variable:

$$outer

equivaldría a la cadena "foo"


Aunque la respuesta aceptada es mucho más amplia (incluidos los casos de prueba). Esta explicación me lo hizo más claro
MariusJP


7

Crea un nombre de variable dinámica. P.ej

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

(también conocido como variable variable )


4

No quiero repetir después de otros pero existe el riesgo de usar $$:)

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

Así que úsalo con la cabeza. :)


1

Evalúa el contenido de una variable como el nombre de otra. Básicamente, le da la variable cuyo nombre está almacenado $link.


1

esto funcionó para mí (encierre entre corchetes):

$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;
    }
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.