Biến (Variable) trong PHP
- 16-07-2022
- Toanngo92
- 0 Comments
Các biến trong chương trình thường được sử dụng để lưu trữ dữ liệu hoặc các giá trị có thể được sử dụng bất cứ lúc nào trong quá trình thực thi chương trình. Các biến được sử dụng để lưu trữ dữ liệu như giá trị số và ký tự, chuỗi và địa chỉ bộ nhớ trong thời gian chạy.
Mục lục
Khái niệm biến trong PHP
Trong PHP, các thuộc tính liên quan đến dữ liệu được cung cấp xác định kiểu dữ liệu.
Có nhiều kiểu dữ liệu khác nhau, chẳng hạn như số nguyên, số thực, chuỗi, mảng, object v.v., có hỗ trợ ngầm định trong PHP.
Đặt tên biến trong PHP
Cú pháp khai báo biến:
$variable_name = value;
Trong PHP, có một số quy tắc phải tuân theo khi tạo biến. Mặc dù một số tương tự với các ngôn ngữ lập trình khác, một số chỉ bắt gặp trong PHP như sau:
- Tên của tất cả các biến phải bắt đầu bằng dấu $. Ví dụ: $my_var.
- Tên của các biến có phân biệt chữ hoa chữ thường, nghĩa là $my_var khác với $MY_VAR. Do đó, $ABC, $ABc, $abc và $Abc là các biến khác nhau.
- Tên của các biến phải bắt đầu bằng một bảng chữ cái, có thể là chữ thường hoặc chữ hoa. Tiếp theo là các ký tự khác. Ví dụ: $my_var1 là một tên biến hợp lệ, trong khi $1my_var thì không.
- Tên của các biến không được chứa bất kỳ khoảng trắng nào. Do đó, ‘$first name’ không phải là một tên biến hợp lệ. Tuy nhiên, có thể sử dụng dấu gạch dưới thay cho khoảng trắng, chẳng hạn như $first_name. Các ký tự như $ hoặc ~ không được dùng để phân cách các tên biến.
- Vì PHP là một ngôn ngữ có phong cách khai báo lỏng lẻo, nên việc khai báo kiểu dữ liệu cho các biến là không bắt buộc. Trình thông dịch PHP tự động phân tích các giá trị và thực hiện chuyển đổi thích hợp sang kiểu dữ liệu chính xác.
- Khi một biến đã được khai báo, nó có thể được sử dụng lại trong toàn bộ mã nguồn.
- Có thể áp dụng Toán tử Gán (=) để gán bất kỳ giá trị nào cho một biến.
Local variable (biến cục bộ)
Các biến được khai báo trong một hàm được gọi là biến cục bộ cho hàm đó. Một biến được khai báo trong một hàm chỉ có thể được truy cập trong hàm đó.
Ví dụ:
<?php
function Test()
{
$x = 5; // local scope
echo "<p>Variable x inside function is: $x</p>";
}
Test();
// using x outside the function will generate an error
echo "<p>Variable x outside function is: $x</p>";
Ở ví dụ trên, vì không có giá trị nào cho biến x được khai báo bên ngoài hàm, nó sẽ hiển thị lỗi trong đầu ra khi bạn cố gắng in giá trị của x ra bên ngoài hàm, các biến cục bộ chỉ được nhận dạng bởi hàm mà chúng đã được khai báo.
Do đó, các biến cục bộ có thể tồn tại trùng tên trên các hàm khác nhau, Một biến được khai báo bên ngoài hàm trùng tên hoàn toàn khác với biến đã được khai báo bên trong hàm.
Global variable (biến toàn cục)
Các biến toàn cục được khai báo bên ngoài phần thân của một hàm. Các biến này có thể được truy cập từ bất kỳ đâu trong chương trình.
Ví dụ:
<?php
$x = 5; // local scope
function Test()
{
echo "<p>Variable x inside function is: $x</p>";
}
Test();
// using x outside the function will generate an error
echo "<p>Variable x outside function is: $x</p>";
Ở đây, biến x bên trong hàm không chứa bất kỳ giá trị nào, vì x đã được khai báo là biến toàn cục bên ngoài hàm. Từ khóa echo bây giờ được sử dụng để in ra giá trị của biến x bên ngoài hàm, Do đó, biến x nằm ngoài hàm là 5.
Static variable (biến tĩnh)
Trong PHP, một biến thường bị xóa sau khi nó được thực thi và bộ nhớ của nó đã được giải phóng. Tuy nhiên, đôi khi một biến được yêu cầu ngay cả sau khi nó được thực thi. Để xử lý tình huống này, bạn có thể khai báo một biến dưới dạng static (biến tĩnh), biến này chỉ có trong một hàm cục bộ. Bộ nhớ tĩnh là nơi lưu trữ biến tĩnh. Bạn có thể tạo một biến tĩnh trong khi bắt đầu thực thi chương trình và hủy nó trong khi kết thúc thực thi chương trình.
<?php
function static_var(){
static $x = 0;
$y = 20;
$x++;
$y++;
echo "<br>";
echo "static: $x";
echo "<br>";
echo "Y: $y";
}
//first call
static_var();
//second call
static_var();
// output:
// static: 1
// Y: 21
// static: 2
// Y: 21
?>
Ở đây, sau mỗi lần gọi hàm, biến $x được tăng lên. Tuy nhiên, $y thì không. Vì $y không phải là một biến static, bộ nhớ của nó sẽ được giải phóng sau mỗi lần thực hiện lệnh gọi hàm, nó sẽ không giữ giá trị đã tăng trước đó, Mỗi lệnh gọi hàm mới sẽ lưu trữ giá trị mới được gán cho biến $y. Trong khi đó, trong trường hợp $x, giá trị của $x sẽ không tạo lại mới trước khi tăng lên mà nó sử dụng giá trị lần thực thi trước.
Function parameters (Tham số truyền vào hàm)
Có thể có 0 hoặc nhiều tham số cho một hàm. Các tham số trong một hàm được phân tách bằng dấu phẩy (,). Nếu số lượng đối số được truyền cho hàm ít hơn số lượng tham số được xác định, PHP sẽ thông báo lỗi .Các tham số được khai báo hàm sau tên hàm, nhưng bên trong dấu ngoặc đơn. Chúng phải được khai báo tương tự như cách khai báo các biến thông thường. Trong PHP 7.0, trình thông dịch PHP bỏ qua dấu phẩy ở cuối. Tuy nhiên, từ PHP 8.0 trở đi, dấu phẩy ở cuối có thể được đặt theo cách khác.
Ví dụ:
<?php
function multiply($val){
return $val * 2;
}
$var = multiply(10);
echo $var;
// output: 20
Variables type (loại biến)
Dựa trên các thuộc tính, dữ liệu có thể được phân loại thành các loại khác nhau, được gọi là kiểu dữ liệu. Các ký tự chữ và số được phân loại là chuỗi, số nguyên được phân loại là số nguyên và các số có dấu thập phân được phân loại là số thực. Có 8 kiểu dữ liệu được sử dụng để xây dựng các biến.
Variable Type | Description |
Integer | Là các số nguyên không có dấu thập phân. Ví dụ: 4195 |
Doubles | Là các số dấu phẩy động. Ví dụ: 49.1 hoặc 3.14159. |
Booleans | Chỉ có thể có một trong 2 giá trị là TRUE hoặc FALSE |
NULL | Là kiểu dữ liệu đặc biệt và chỉ có thể có giá trị là NULL |
Strings | Một danh sách tuần tự các ký tự. Ví dụ: ‘xin chao the gioi’ |
Arrays | Là các danh sách được đặt tên và lập chỉ mục cho các giá trị. |
Objects | Là các thể hiện của các lớp do người lập trình xác định, có thể đóng gói cả các loại giá trị (thuộc tính) và hàm (phương thức) khác dành riêng cho lớp đó. |
Resources | Là các biến đặc biệt giữ các tham chiếu đến các tài nguyên bên ngoài PHP. Ví dụ, các kết nối cơ sở dữ liệu. |
Ở đây, trong khi năm kiểu dữ liệu đầu tiên là kiểu đơn giản, array và object là kiểu phức hợp. Điều này có nghĩa là chúng có thể đóng gói các giá trị tùy ý khác của kiểu tùy ý.
Integer variable (Biến Integer)
Xem thêm tài liệu về kiểu dữ liệu integer: https://hocvietcode.com/cac-kieu-du-lieu-trong-php/#Kieu_du_lieu_Integer_so_nguyen
Một số nguyên là một số không có bất kỳ phần thập phân nào. Ví dụ: các số 2, 256, -256, 10358 và -179567 đều là số nguyên.
Kiểu dữ liệu số nguyên được định nghĩa là một số không thập phân. Phạm vi khác nhau đối với hệ thống 32-bit và hệ thống 64-bit. Giữa -2147483648 đến +2147483647 – Giữa -9223372036854775808 và +9223372036854775807.
Khi giới hạn của một số nguyên bị vượt quá, bất kỳ giá trị nào lớn hơn hoặc nhỏ hơn giá trị này, sẽ được lưu trữ dưới dạng số thực. Kết quả sẽ chỉ được lưu trữ dưới dạng float, ngay cả khi chỉ một trong các toán hạng là float. Ví dụ, nếu 4 * 2.5 là 10, kết quả vẫn được lưu trữ dưới dạng float, vì một trong các toán hạng (2.5) là float.
Sau đây là một số quy tắc áp dụng cho số nguyên:
- Phải có ít nhất một chữ số trong một số nguyên. Ví dụ: $var = 69;
- Không được có bất kỳ dấu thập phân nào trong một số nguyên. Ví dụ, $var = 87654;
- Số nguyên có thể là số âm hoặc số dương. Ví dụ: $var = -1245 + 134.
- Bạn có thể chỉ định một số nguyên ở ba định dạng khác nhau:
- Hệ bát phân (dựa trên 8 và có tiền tố là 0)
- Hệ Thập phân (dựa trên 10)
- Hệ thập lục phân (dựa trên 16 và có tiền tố là 0x)
Sau đây là ba hàm được hỗ trợ trong PHP, để kiểm tra xem kiểu của một biến có phải là số nguyên hay không:
- is_int()
- is long() – bí danh của is_int()
- is_integer() – bí danh của is_int ()
Ví dụ:
<?php
$x1 = 1024;
var_dump(is_int($x1));
$x2 = 99.847;
var_dump(is_int($x2));
$x3 = 6987;
var_dump(is_int($x3));
//output:
// bool(true) bool(false) bool(true)
Double variable (Biến Double)
Theo mặc định, kiểu dữ liệu double in ra số chữ số thập phân tối thiểu. Ví dụ:
<?php
$many = 2.2888800;
$many_2 = 2.2111200;
$res = $many + $many_2;
print("$many + $many_2 = $res");
// output:
// 2.2888800 + 2.2111200 = 4.5
?>
Boolean variable (Biến Boolean)
Boolean là kiểu dữ liệu đơn giản nhất và tương tự như một công tắc bật tắt điện.
Chúng chỉ có thể giữ một trong hai giá trị tại một thời điểm, cụ thể là TRUE (1) hoặc FALSE (0). Chúng chủ yếu được sử dụng với các câu lệnh điều kiện. Nếu điều kiện đúng, thì chúng trả về TRUE. Nếu điều kiện không đúng, chúng trả về FALSE.
<?php
if (TRUE)
echo "This condition is TRUE.";
if (FALSE)
echo "This condition is FALSE.";
// Output:
// This condition is TRUE.
Ở đây, giá trị Boolean được hiển thị là true. Theo mặc định, giá trị true đầu tiên luôn được in, nếu không có điều kiện nào trong chương trình. Do đó, ở đây, khối thực được thực thi.
NULL variable (biến variable)
Kiểu dữ liệu đặc biệt Null chỉ có một giá trị NULL.. Nó thường được viết bằng chữ in hoa, vì nó có phân biệt chữ hoa chữ thường. Nếu biến được tạo mà không có bất kỳ giá trị nào, nó sẽ tự động được gán giá trị NULL. Một biến có giá trị NULL sẽ đánh giá thành FALSE trong ngữ cảnh Boolean.
Cú pháp:
$var = null;
String variable (biến chuỗi)
Chuỗi là một chuỗi các ký tự, trong đó kích thước của ký tự là một byte. Trong PHP, chỉ bộ 256 ký tự được hỗ trợ và không hỗ trợ Unicode gốc.
Tuy nhiên, trong hệ thống 32 bit, một chuỗi có thể có kích thước là 2 GB (tối đa là 2147483647 byte).
Người dùng có thể chỉ định một chuỗi ký tự theo bốn cách khác nhau:
- Single quoted: chuỗi nằm trong dấu nháy đơn (‘)
- Double quoted: chuỗi nằm trong dấu nháy đôi (“)
- Heredoc syntax: Có thể dễ dàng xác định các chuỗi với các biến chứa nhiều từ để tạo văn bản cho các trang Web. Cú pháp là $strVar = <<<LABEL.
- Nowdoc syntax: Câu lệnh Nowdoc bắt đầu bằng chuỗi ‘<<<‘ với mã định danh của chúng Cú pháp Nowdoc được đóng bằng dấu nháy đơn (‘).
Ví dụ:
<?php
// PHP Heredoc
$my_var = <<<EOD
<a href="https://hocvietcode.com" title="hello">Using heredoc</a>
EOD;
echo $my_var;
Phạm vi biến trong PHP
Tương tự như bất kỳ ngôn ngữ lập trình nào khác, mỗi biến có một phạm vi liên kết với nó. Phạm vi này xác định khả năng hiển thị của biến. Nếu một biến là toàn cầu, tất cả các tập lệnh trong một ứng dụng đều có thể truy cập nó. Mặt khác, có thể truy cập một biến cục bộ trong tập lệnh nơi nó đã được xác định. Các biến có thể được khai báo ở bất kỳ đâu trong tập lệnh. Tuy nhiên, phạm vi của một biến sẽ phụ thuộc vào nơi mà biến đã được khai báo. Có ba phạm vi biến khác nhau như sau:
local variable (biến cục bộ) | global variable(biến toàn cục) | static variable (biến tĩnh) |
Nếu bạn khai báo một biến trong hàm, thì biến đó có phạm vi và khả dụng cục bộ trong hàm đó. | Một biến được khai báo bên ngoài một hàm khả dụng và có phạm vi toàn cục. | Biến có thể giữ lại giá trị cũ mà không bị hủy dù sau khi thực thi hàm |
Chỉ có thể hiểu và truy cập bên trong hàm | Chỉ có thể truy cập bến bên ngoài hàm | Phạm vi cục bộ bên trong hàm |
Từ khóa global
Nếu bạn muốn truy cập biến toàn cục bên trong một hàm, cần thêm từ khóa global trước tên biến. Tuy nhiên, bạn cũng có thể truy cập trực tiếp hoặc sử dụng các biến này bên ngoài hàm mà không cần thêm bất kỳ từ khóa nào. Trong PHP, tất cả các biến toàn cục được lưu trữ trong một mảng được gọi là $GLOBAL[index]. Index nắm giữ tên biến. Bạn có thể truy cập nó từ bên trong các chức năng và cũng có thể sử dụng nó để tải trực tiếp các biến toàn cục lên.
Ví dụ:
<?php
$x1 = 25;
$y1 = 10;
function phepCong()
{
global $x1, $y1;
$y1 = $x1 + $y1;
}
phepCong(); // chạy hàm
echo $y1; // hiển thị giá trị cập nhật cho biến $y
// output: 35
Từ khóa static
Biến static được tạo khi biến cục bộ được yêu cầu và không bị xóa sau khi thực thi hàm. Để tạo một biến static, bạn có thể thêm từ khóa static trước biến khi lần đầu tiên khai báo nó trong một hàm, Mỗi khi hàm được gọi, biến sẽ vẫn giữ lại thông tin từ phiên bản cuối cùng mà hàm được gọi. Ở đây, phạm vi biến vẫn chỉ cục bộ bên trong hàm.
<?php
function festFunc()
{
static $x = 0;
echo $x;
$x++;
}
festFunc();
echo "<br>";
festFunc();
echo "<br>";
festFunc();
// output:
// 1
// 2
// 3