Was bedeutet $$ (Dollar Dollar oder doppelter Dollar) in PHP?


116

Beispiel ist eine Variablendeklaration innerhalb einer Funktion:

global $$link;

Was heißt $$das



50
es zeigt dir, wie viel $$$ du für die Wartung des Systems
bekommst


Es ist eine namenbasierte Referenzierung. So etwas wie ${$link}in Bash
Ondra Žižka

Antworten:


181

Eine Syntax wie $$variableheißt Variable Variable .


Wenn Sie beispielsweise diesen Teil des Codes berücksichtigen:

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

Sie erhalten folgende Ausgabe:

test


Hier :

  • $real_variable enthält Test
  • $name enthält den Namen Ihrer Variablen: 'real_variable'
  • $$namebedeuten " die Variable, in der der Name enthalten ist$name "
    • Welches ist $real_variable
    • Und hat den Wert 'test'



BEARBEITEN nach @ Jhonnys Kommentar:

Ein $$$?
Der beste Weg, es zu wissen, ist es zu versuchen ;-)

Versuchen wir also diesen Teil des Codes:

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

Und hier ist die Ausgabe, die ich bekomme:

name
real_variable
test

Also würde ich sagen, ja, das kannst du$$$ ;-)


10
Ich stimme zwar zu, dass es nützlich sein kann, aber meistens ist es trotzdem besser, Arrays zu verwenden.
o0 '.

Ist das also dasselbe wie $ {$ value}?
Chaim

3
@Chaim: ja das ist es ;; außer dass in einigen Fällen die {und }erforderlich sind (es gibt ein Beispiel im Handbuch dazu)
Pascal MARTIN

23

Das innere $ löst die Variable a in eine Zeichenfolge auf, und das äußere $ löst eine Variable anhand dieser Zeichenfolge auf.

Betrachten Sie dieses Beispiel

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

Die Variable:

$$outer

würde gleich der Zeichenfolge "foo"


Obwohl die akzeptierte Antwort viel breiter ist (einschließlich Testfällen). Diese Erklärung machte es mir klarer
MariusJP



4

Ich möchte nicht nach anderen wiederholen, aber es besteht das Risiko, $$:)

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

Also benutze es mit dem Kopf. :) :)


1

Es wertet den Inhalt einer Variablen als den Namen einer anderen aus. Grundsätzlich erhalten Sie die Variable, in deren Namen gespeichert ist $link.


1

das hat bei mir funktioniert (in eckige Klammern setzen):

$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;
    }
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.