Co oznacza $$ (dolar dolar lub podwójny dolar) w PHP?


Odpowiedzi:


183

Taka składnia $$variablenazywa się Zmienna zmienna .


Na przykład, jeśli weźmiesz pod uwagę tę część kodu:

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

Otrzymasz następujące dane wyjściowe:

test


Tutaj:

  • $real_variable zawiera test
  • $name zawiera nazwę twojej zmiennej: 'real_variable'
  • $$nameoznacza " zmienna, w której zawarta jest nazwa$name
    • Który jest $real_variable
    • I ma wartość 'test'



EDYTUJ po komentarzu @ Jhonny:

Robi $$$?
Cóż, najlepszym sposobem, aby się dowiedzieć, jest spróbować ;-)

Spróbujmy więc tej części kodu:

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

A oto wynik, który otrzymuję:

name
real_variable
test

Więc powiedziałbym, że tak, możesz to zrobić$$$ ;-)


10
Chociaż zgadzam się, że może to być przydatne, w większości przypadków i tak lepiej jest używać tablic.
o0 '.

czy to to samo, co robienie $ {$ value}?
Chaim

3
@Chaim: tak jest ;; poza tym, że w niektórych przypadkach wymagane są {i (jest na to przykład w podręczniku)}
Pascal MARTIN

23

Wewnętrzna $ rozwiązuje zmienną a na łańcuch, a zewnętrzna rozwiązuje zmienną za pomocą tego ciągu.

Rozważmy więc ten przykład

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

Zmienna:

$$outer

będzie równy ciągowi „foo”


Mimo że przyjęta odpowiedź jest dużo szersza (w tym przypadki testowe). To wyjaśnienie sprawiło, że stało się to dla mnie jaśniejsze
MariusJP


7

Tworzy dynamiczną nazwę zmiennej. Na przykład

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

(znany również jako zmienna zmienna )


4

Nie chcę powtarzać po innych ale istnieje ryzyko używania $$:)

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

Więc używaj go z głową. :)


1

Ocenia zawartość jednej zmiennej jako nazwę innej. Zasadniczo podaje zmienną, której nazwa jest przechowywana $link.


1

to zadziałało dla mnie (w nawiasach kwadratowych):

$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;
    }
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.