Khác biệt lớn nhất của biến toàn cục và biến cục bộ có thể thấy ngay ở các ví dụ về fuction. ta xét đoạn mã:
bạn hãy chạy thử đoạn mã, chỉ có 1 từ "Chữ viết" được in ra.
<?php
function vietchu()
{
$chu="Chữ viết";
echo $chu;
}
vietchu();
echo $chu;
?>
Hàm vietchu() thực hiện 2 động tác: 1 gán chuỗi "Chữ viết" cho biến $chu, 2 in ra biến $chu
Vậy tại sao khi với dòng lệnh tiếp theo ( echo $chu; ) lại không hề cho ra bất cứ kết quả nào?
Câu trả lời mà cho tới lúc này chắc các bạn ai cũng đoán được: $chu chỉ là biến cục bộ, chỉ có hiệu lực bên trong hàm.
Việc người ta chế ra 2 loại biến này cũng có lý do, ví dụ như khỏi lo bị trùng các biến nếu trong cùng một file mà có nhiều hàm. Nhắm cái nào cần giữ giá trị llại thì giữ, đỡ tốn cấu hình.
ở đây, nếu bạn muốn xác định biến nào sẽ là biến toàn cục thì hãy khai báo các biến đó sau từ khoá global
function vietchu()
{
global $chu;
$chu="Chữ viết";
echo $chu;
}
và thêm một lưu ý, biến đã được gán giá trị bên ngoài, đưa vào trong hàm cũng không có giá trị (nói chung nếu mà không khai báo biến toàn cục thì "nội bất xuất, ngoại bất nhập".
Ví dụ:
<?php
$viet="Việt nam";
function vietchu()
{
$chu="Chữ viết ".$viet;
echo $chu;
}
vietchu();
?>
hàm này chỉ in ra hàm chử viết, để có thể in ra nguyên câu : Chữ viết Việt Nam như ta mong muốn thì hãy khai báo biến toàn cục cho $viet
$viet="Việt nam";
function vietchu()
{
global $viet;
$chu="Chữ viết ".$viet;
echo $chu;
}
Đây chỉ là một ví dụ đơn giản, trong thực tế, vấn đề này được dùng tới rất nhiều, trong thời gian và va chạm, bạn sẽ thấy cái gì cacng2 cơ bản lại càng quan trọng.
http://hocvui.net
Biến toàn cục và biến cục bộ