PHP에서 $$ (달러 또는 더블 달러)는 무엇을 의미합니까?


116

예는 함수 내의 변수 선언입니다.

global $$link;

무슨 $$뜻이야?



50
그것은 당신이 시스템을 유지하기 위해 얼마나 많은 $$$를 받게 될지 보여줍니다;)
RCIX


이름 기반 역 참조입니다. ${$link}Bash 와 같은 것
Ondra Žižka

답변:


182

와 같은 구문을 Variable Variable$$variable 이라고 합니다.


예를 들어 다음 코드 부분을 고려하면 다음과 같습니다.

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

다음 출력이 표시됩니다.

test


여기 :

  • $real_variable 테스트 포함
  • $name 변수 이름이 포함됩니다. 'real_variable'
  • $$name의미 " thas 변수에는$name "에 포함 된 이름이 있습니다.
    • 어느 것이 $real_variable
    • 그리고 가치가 있습니다 'test'



@Jhonny의 의견 후 편집 :

하고 $$$있습니까?
글쎄, 아는 가장 좋은 방법은 시도하는 것입니다 ;-)

자,이 코드 부분을 시도해 봅시다.

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

그리고 내가 얻는 출력은 다음과 같습니다.

name
real_variable
test

그래서, 예, 당신은 할 수$$$ 있다고 말할 것입니다 ;-)


10
유용 할 수 있다는 데 동의하지만 대부분의 경우 배열을 사용하는 것이 좋습니다.
o0 '.

$ {$ value}를하는 것과 같은 일입니까?
Chaim

3
@Chaim : 네 맞습니다 ;; 어떤 경우에는, 그것을 제외하고는 {}요구된다 (즉, 약 설명서의 예를 들어있어)
파스칼 MARTIN

23

내부 $는 변수를 문자열로 확인하고 외부 변수는 해당 문자열로 변수를 확인합니다.

따라서이 예를 고려하십시오.

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

변수 :

$$outer

문자열 "foo"와 같음


허용되는 anwser가 훨씬 더 광범위하더라도 (테스트 케이스 포함). 이 설명은 나를 위해 그것을 명확하게
MariusJP

13

그것은 A의 변수의 변수 .

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

7

동적 변수 이름을 생성합니다. 예

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

( 변수 변수 라고도 함 )


4

나는 다른 사람들을 반복하고 싶지 않지만 사용하는 위험이 있습니다. $$:)

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

그래서 머리와 함께 사용하십시오. :)


1

한 변수의 내용을 다른 변수의 이름으로 평가합니다. 기본적으로 이름이에 저장된 변수를 제공합니다 $link.


1

이것은 나를 위해 일했습니다 (대괄호로 묶음).

$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;
    }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.