Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does $$ (dollar dollar or double dollar) mean in PHP?

Tags:

php

People also ask

What does double dollar mean?

The Double Dollars program provides FoodShare shoppers with a dollar-for-dollar match up to $25 per market day at participating farmers' markets. The extra money spent by shoppers goes straight into the pockets of the vendors who get reimbursed for the full value of every Double Dollar redeemed.

What is double in PHP?

PHP | is_double() Function The is_double() function is an inbuilt function in PHP which is used to find whether the given value is a double or not.

What is $$ variable?

The $var (single dollar) is a normal variable with the name var that stores any value like string, integer, float, etc. The $$var (double dollar) is a reference variable that stores the value of the $variable inside it. To understand the difference better, let's see some examples.

What is difference between PHP and $$ variables?

Difference between $var and $$var in PHP. In PHP, $var is used to store the value of the variable like Integer, String, boolean, character. $var is a variable and $$var stores the value of the variable inside it.


A syntax such as $$variable is called Variable Variable.


For example, if you consider this portion of code :

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

You will get the following output :

test


Here :

  • $real_variable contains test
  • $name contains the name of your variable : 'real_variable'
  • $$name mean "the variable thas has its name contained in $name"
    • Which is $real_variable
    • And has the value 'test'



EDIT after @Jhonny's comment :

Doing a $$$ ?
Well, the best way to know is to try ;-)

So, let's try this portion of 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 />';

And here's the output I get :

name
real_variable
test

So, I would say that, yes, you can do $$$ ;-)


The inner $ resolves the a variable to a string, and the outer one resolves a variable by that string.

So, consider this example

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

The variable:

$$outer

would equal the string "foo"


It's a variable's variable.

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

It creates a dynamic variable name. E.g.

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

(also known as variable variable)


I do not want to repeat after others but there is a risk using $$ :)

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

So use it with head. :)


It evaluates the contents of one variable as the name of another. Basically it gives you the variable whose name is stored in $link.


this worked for me (enclose in square brackets):

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