$$ (dolar doları veya çift dolar) PHP'de ne anlama geliyor?


116

Örnek, bir işlev içindeki değişken bildirimidir:

global $$link;

Ne anlama $$geliyor?



51
sistemi korumak için ne kadar kazanacağınızı gösterir;)
RCIX


İsme dayalı bir referanstan kurtulma. Bir şey gibi ${$link}Bash
Ondra Žižka

Yanıtlar:


183

Değişken Değişken olarak $$variableadlandırılan gibi bir sözdizimi .


Örneğin, kodun bu bölümünü göz önünde bulundurursanız:

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

Aşağıdaki çıktıyı alacaksınız:

test


Buraya :

  • $real_variable test içerir
  • $name değişkeninizin adını içerir: 'real_variable'
  • $$nameYani " değişken thas adını içerdiği etti$name "
    • Hangisi $real_variable
    • Ve değeri var 'test'



@ Jhonny'nin yorumundan sonra DÜZENLE:

Yapmak $$$mı?
Peki, bilmenin en iyi yolu denemektir ;-)

Öyleyse, kodun bu bölümünü deneyelim:

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

Ve işte aldığım çıktı:

name
real_variable
test

Yani şunu söyleyebilirim, evet, yapabilirsin$$$ ;-)


10
Faydalı olabileceği konusunda hemfikir olsam da, çoğu zaman zaten dizileri kullanmak daha iyidir.
o0 '.

bu, $ {$ değer} yapmakla aynı şey mi?
Chaim

3
@Chaim: evet öyle ;; dışında, bazı durumlarda {ve }gereklidir (kılavuzda bununla ilgili bir örnek vardır)
Pascal MARTIN

23

İçteki $, bir değişkeni bir dizeye, dıştaki ise bir değişkeni bu dizgeye göre çözümler.

Öyleyse, bu örneği düşünün

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

Değişken:

$$outer

"foo" dizesine eşit olur


Kabul edilen cevaplayıcı çok daha geniş olsa da (test senaryoları dahil). Bu açıklama benim için daha net hale getirdi
MariusJP



4

Başkalarından sonra tekrar etmek istemiyorum ama kullanmanın bir riski var $$:)

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

Bu yüzden kafa ile kullanın. :)


1

Bir değişkenin içeriğini diğerinin adı olarak değerlendirir. Temelde size adı saklanan değişkeni verir $link.


1

bu benim için çalıştı (köşeli parantez içine alın):

$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;
    }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.