
Trong PHP biến và hằng là hai khái niệm hay gặp nhất. Và có nhiều người vẫn chưa biết được sự khác nhau giữa chúng. Hãy cùng mình tìm hiểu về cách khai báo và sự khác nhau giữa chúng nhé.
Cách khai báo biến
- Trong PHP biến được viết bằng ký tự $ theo ngay sau đó là tên biến.
- Một tên biến phải bắt đầu bằng chữ cái hoặc ký tự gạch dưới.
- Tên biến không được bắt đầu bằng chữ số.
- Tên biến chỉ chứa các chữ cái có thể viết thường hay viết hoa, số và dấu gạch dưới.
- Trong PHP tên biến có phân biệt viết hoa và viết thường, do đó
$title
và$Title
là 2 biến khác nhau.
1 2 3 4 5 6 7 8 9 10 11 |
<?php $title = "\$title chính là một biến"; $Title = "\$Title chính là một biến khác"; $print = "In biến ra trình duyệt"; echo $print; echo "<br />"; echo $title; echo "<br />"; echo $Title; ?> |
Kết quả:
In biến ra trình duyệt $title chính là một biến $Title chính là một biến khác |
Phạm vi của biến
Trong PHP, các biến có thể được khai báo ở bất kỳ đâu trong tập lệnh. PHP có ba phạm vi biến khác nhau:
- local (cục bộ)
- global (toàn cục)
- static
Biến toàn cục (global)
Một biến được xem là toàn cục khi nó được khai báo bên ngoài hàm và chỉ được truy cập bên ngoài hàm
1 2 3 4 5 6 7 8 |
<?php $title = "Đây là biến toàn cục, được khai báo bên ngoài hàm"; function getTitle(){ echo $title; // không in được, bởi vi không thể sử dụng biến global bên trong hàm } echo $title; // in ra được vì ở đây là bên ngoài hàm ?> |
Nếu bạn muốn sử dụng biến toàn cục bên trong hàm bạn phải khai báo global trước tên biến bên trong hàm.
1 2 3 4 5 6 7 8 9 |
<?php $title = "Đây là biến toàn cục, được khai báo bên ngoài hàm"; function getTitle(){ global $title; // khai báo global trước tên biến để sử dụng biến toàn cục bên trong hàm echo $title; } getTitle(); ?> |
PHP cũng lưu trữ tất cả các biến toàn cục trong một mảng có tên là $ GLOBALS [index]. Với index là tên của biến toàn cục. Mảng này cũng có thể truy cập được từ bên trong các hàm và có thể được sử dụng để cập nhật trực tiếp các biến toàn cục.
1 2 3 4 5 6 7 8 9 10 |
<?php $a = 9; $b = 21; function getSum(){ $GLOBALS['a'] = $GLOBALS['a'] + $GLOBALS['b']; } getSum(); echo $a; // kết quả là 30 ?> |
Biến cục bộ (local)
Một biến cục bộ là biến được khai báo bên trong hàm và chỉ có thể sử dụng bên trong hàm đó
1 2 3 4 5 6 7 8 9 |
<?php function getSum(){ $a = "Đây là biến cục bộ vì được khai báo bên trong hàm getSum"; echo $a; } getSum(); ?> |
Biến Static
Thông thường, khi một hàm được thực thi, tất cả các biến của nó sẽ bị xóa. Tuy nhiên, đôi khi chúng ta muốn một biến cục bộ không bị xóa. Chúng ta cần nó để làm một công việc nào đó tiếp theo.
1 2 3 4 5 6 7 8 9 10 11 |
<?php function getCount() { static $x = 0; echo $x; $x++; } myTest(); //kết quả là 0 myTest(); //kết quả là 1 myTest(); //kết quả là 2 ?> |
Hằng số (Constants)
- Hằng số sẽ không thay đổi giá trị trong suốt quá trình chạy.
- Tên hằng số bắt đầu bằng chữ cái hoặc dấu gạch dưới không bắt đầu với dấu $.
- Hằng số có giá trị toàn cục trên toàn bộ tập lệnh.
Sử dụng cú pháp: define(name, value, case-insensitive) để tạo hằng số.
1 2 3 4 |
<?php define("WEBSITE", "vi-magento.com!"); echo WEBSITE; ?> |
So sánh biến và hằng
- Gía trị của biến có thể thay đổi trong quá trình chạy tập lệnh
- Gía trị của hằng số được khai báo một lần và sẽ giữ nguyên giá trị trong suốt quá trình chạy tập lệnh.