2012-07-10 40 views
65

Tôi đã chơi với các chức năng ẩn danh trong PHP và nhận ra rằng chúng dường như không tiếp cận các biến bên ngoài chúng. Có cách nào để giải quyết vấn đề này không?biến php trong các chức năng ẩn danh

Ví dụ:

$variable = "nothing"; 

functionName(someArgument, function() { 
    $variable = "something"; 
}); 

echo $variable; 

Will đầu ra: "không có gì". Có cách nào mà hàm ẩn danh có thể truy cập biến $?

Trả lời

168

Vâng, use a closure:

functionName(someArgument, function() use(&$variable) { 
    $variable = "something"; 
}); 

Lưu ý rằng để cho bạn để có thể sửa đổi $variable và lấy giá trị biến đổi bên ngoài phạm vi của hàm nặc danh, nó phải được tham chiếu trong việc đóng cửa sử dụng & .

+1

Tuyệt vời! Chưa từng thấy trước đây .. =) – einord

+0

Mới! Đó là cú pháp mới trong PHP 5.3. –

+1

@Rocket Vì vậy, để công bằng, là cú pháp hàm ẩn danh đúng (trái ngược với 'create_function()') và từ khóa 'use' được ghi lại (xấu) trên [cùng một trang doc] (http: // php. net/manual/en/functions.anonymous.php) mô tả chúng. – DaveRandom

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