Apa arti $$ (dolar dolar atau dolar ganda) dalam PHP?

116

Contoh adalah deklarasi variabel dalam suatu fungsi:

global $$link;

Apa $$maksudnya

ketidakjujuran
sumber
50
ini menunjukkan kepada Anda berapa banyak $$$ yang akan Anda peroleh untuk memelihara sistem;)
RCIX
2
(terkait) Apa arti simbol itu di PHP
Gordon
Ini adalah de-referensi berbasis nama. Sesuatu seperti ${$link}di Bash
Ondra Žižka
Variabel variabel
Kris Roofe

Jawaban:

182

Sintaks seperti $$variableitu disebut Variable Variable .


Misalnya, jika Anda mempertimbangkan bagian kode ini:

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

Anda akan mendapatkan hasil sebagai berikut:

test


Disini:

  • $real_variable berisi tes
  • $name berisi nama variabel Anda: 'real_variable'
  • $$nameberarti " variabel yang namanya terkandung dalam$name "
    • Yang mana $real_variable
    • Dan memiliki nilai 'test'



EDIT setelah komentar @ Jhonny:

Melakukan $$$?
Nah, cara terbaik untuk mengetahuinya adalah dengan mencoba ;-)

Jadi, mari kita coba bagian kode ini:

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

Dan inilah output yang saya dapatkan:

name
real_variable
test

Jadi, menurut saya, ya, Anda bisa melakukannya$$$ ;-)

Pascal MARTIN
sumber
10
Meskipun saya setuju bahwa ini bisa berguna, seringkali lebih baik menggunakan array.
o0 '.
jadi apakah ini sama dengan melakukan $ {$ value}?
Chaim
3
@ Chaim: ya itu ;; kecuali bahwa, dalam beberapa kasus, {dan }diperlukan (ada contoh di manual tentang itu)
Pascal MARTIN
23

$ Bagian dalam menyelesaikan variabel menjadi string, dan bagian luar menyelesaikan variabel dengan string itu.

Jadi, perhatikan contoh ini

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

Variabel:

$$outer

akan sama dengan string "foo"

Kaya
sumber
Meskipun jawaban yang diterima jauh lebih luas (termasuk kasus uji). Penjelasan ini membuatnya lebih jelas bagi saya
MariusJP
13

Ini variabel variabel .

<?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
sumber
7

Ini menciptakan nama variabel dinamis. Misalnya

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

(juga dikenal sebagai variabel variabel )

Felix Kling
sumber
4

Saya tidak ingin mengulang setelah orang lain tetapi ada resiko menggunakan $$:)

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

Jadi gunakan dengan kepala. :)

hsz
sumber
1

Ini mengevaluasi isi dari satu variabel sebagai nama variabel lainnya. Pada dasarnya ini memberi Anda variabel yang namanya disimpan $link.

Zach
sumber
1

ini berhasil untuk saya (lampirkan dalam tanda kurung siku):

$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ú
sumber