2009-02-28 30 views
18

Chỉ cần câu hỏi dễ dàng và nhanh chóng. Tôi khá mới với PHP và đang xem xét một số mã hiện có. Tôi đã cố gắng tìm câu trả lời cho câu hỏi của mình trên google, nhưng vô ích.'&' trước tên thông số

Ai đó có thể vui lòng cho tôi biết dấu '&' trước thông số $ var nào không ??

function setdefault(&$var, $default="") 
{ 
    if (! isset($var)) 
    { 
    $var = $default; 
    } 
} 

Trả lời

46

Chuyển nó bằng tham chiếu.

Huh? Đi qua tham chiếu có nghĩa là bạn chuyển địa chỉ của biến thay vì giá trị. Về cơ bản bạn đang tạo một con trỏ tới biến.

http://us.php.net/language.references.pass

+6

+1 Dành cho ** Huh? **, khiến tôi cười khúc khích –

1

& phương tiện pass-by-reference; mã đó làm gì là kiểm tra xem biến có được chuyển đến hàm thực sự tồn tại trong phạm vi toàn cục hay không. Nếu không có &, trước tiên, nó sẽ cố gắng lấy một bản sao của biến, gây ra lỗi nếu nó không tồn tại.

19

Điều này có nghĩa là hàm sẽ lấy tham chiếu đến giá trị ban đầu của đối số $var, thay vì bản sao của giá trị.

Ví dụ:

function add(&$num) { $num++; } 

$number = 0; 
add($number); 
echo $number; // this outputs "1" 

Nếu add() sẽ không có dấu và-đăng nhập chữ ký chức năng, tiếng vang sẽ đầu ra "0", bởi vì giá trị ban đầu không bao giờ thay đổi.

2

Điều này có nghĩa là bạn đang chuyển một biến theo tham chiếu http://ca3.php.net/language.references.pass. Đơn giản, điều này có nghĩa là chức năng đang nhận được một biến thực tế và không phải là một bản sao của biến. Bất kỳ thay đổi nào bạn thực hiện đối với biến đó trong hàm sẽ được nhân đôi trong trình gọi.

Các vấn đề liên quan