Khái niệm biến toàn cục và biến cục bộ chắc các bạn cũng đã từng nghe qua, trong rất nhiều ngôn ngữ khác nhau. trong PHP cũng không loại trừ.
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
functionvietchu()
{
$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ị lạ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
functionvietchu()
{
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";
functionvietchu()
{
$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="Việt nam";
functionvietchu()
{
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ì càng cơ bản lại càng quan trọng.