$$ (đô la đô la hoặc đô la kép) có nghĩa là gì trong PHP?


116

Ví dụ là một khai báo biến trong một hàm:

global $$link;

Nghĩa $$là gì?



50
nó cho bạn biết bạn sẽ nhận được bao nhiêu $$$ để duy trì hệ thống;)
RCIX


Đó là một tham chiếu dựa trên tên. Một cái gì đó giống như ${$link}trong Bash
Ondra Žižka

Câu trả lời:


182

Một cú pháp như $$variableđược gọi là Biến biến .


Ví dụ: nếu bạn xem xét phần mã này:

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

Bạn sẽ nhận được kết quả sau:

test


Đây :

  • $real_variable chứa thử nghiệm
  • $name chứa tên biến của bạn: 'real_variable'
  • $$namecó nghĩa là " biến có tên được chứa trong$name "
    • Cái nào là $real_variable
    • Và có giá trị 'test'



CHỈNH SỬA sau bình luận của @ Jhonny:

Làm một $$$?
Chà, cách tốt nhất để biết là thử ;-)

Vì vậy, hãy thử phần mã này:

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

Và đây là kết quả tôi nhận được:

name
real_variable
test

Vì vậy, tôi sẽ nói rằng, có, bạn có thể làm$$$ ;-)


10
Mặc dù tôi đồng ý rằng nó có thể hữu ích, nhưng hầu hết các trường hợp tốt hơn là sử dụng mảng.
o0 '.

vậy điều này có giống với việc làm $ {$ value} không?
Chaim

3
@Chaim: đúng rồi ;; ngoại trừ rằng, trong một số trường hợp, {}được yêu cầu (có một ví dụ trong cuốn hướng dẫn về điều đó)
Pascal MARTIN

23

$ Bên trong giải quyết một biến thành một chuỗi và cái bên ngoài phân giải một biến theo chuỗi đó.

Vì vậy, hãy xem xét ví dụ này

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

Biến:

$$outer

sẽ bằng chuỗi "foo"


Mặc dù anwser được chấp nhận rộng hơn rất nhiều (bao gồm cả các trường hợp thử nghiệm). Cách giải thích này đã làm cho nó rõ ràng hơn đối với tôi
MariusJP

13

Đó là một biến của biến .

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

7

Nó tạo ra một tên biến động. Ví dụ

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

(còn được gọi là biến biến )


4

Tôi không muốn lặp lại sau những người khác nhưng sẽ có rủi ro khi sử dụng $$:)

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

Vì vậy, hãy sử dụng nó bằng đầu. :)


1

Nó đánh giá nội dung của một biến như tên của một biến khác. Về cơ bản, nó cung cấp cho bạn biến có tên được lưu trữ $link.


1

điều này làm việc cho tôi (đặt trong dấu ngoặc vuông):

$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;
    }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.