Khai báo biến

Khai báo biến

Biến của PHP luôn bắt đầu bằng dấu đô la $. Ngoài ra biến của PHP còn có các đặc điểm:

  • Tên biến đằng sau dấu $ không được là số và phân biệt hoa thường.
  • Sử dụng biến chưa được khai báo sẽ bị báo lỗi.
  • Biến trong PHP không được khai báo dữ liệu tường minh. PHP sẽ tự hiểu kiểu của biến.
  • Biến tự động chuyển đổi kiểu khi cần thiết.

PHP có các kiểu dữ liệu như sau:

  • boolean - chỉ có hai giá trị là true hoặc false
  • integer - Số nguyên.
  • float - Số thực động.
  • NULL - chỉ có một giá trị là NULL
  • string - Một chuỗi ký tự (có thể sử dụng unicode)
  • array - Mảng, không giống như C, mảng trong PHP giống như bảng băm chứa các khóa và dữ liệu.
  • object - Đối tượng.

Ngoài ra còn có kiểu dữ liệu:

  • Callable - kiểu dữ liệu có thể thực thi, có thể là hàm số hoặc đối tượng có thể thực thi. Callable được thêm vào PHP từ phiên bản 5.4
  • Iterable - kiểu dữ liệu có thể lặp được, tương tự như mảng. Được thêm vào PHP từ phiên bản 7.1

Kiểu Boolean

Kiểu Boolean nhận hai giá trị là TRUE hoặc FALSE (không phân biệt hoa thường).

1
$foo = True; // $foo nhận giá trị TRUE

Các kiểu dữ liệu chuyển qua kiểu Boolean mà nhận giá trị FALSE là:

  • Giá trị FALSE
  • Giá trị số nguyên 0-0
  • Giá trị số thực 0.0-0.0
  • Giá trị string rỗng "" và string "0"
  • Một mảng rỗng
  • Giá trị NULL
  • Đối tượng SimpleXML tạo từ một tag rỗng.
    Các giá trị khác chuyển qua kiểu Boolean sẽ thành TRUE.
1
2
3
4
<?php
var_dump((bool) ""); // bool(false)
var_dump((bool) array()); // bool(false)
var_dump((bool) 0); // bool(false)

Kiểu số nguyên (integer)

Kiểu số nguyên là có giá trị 0, số dương 1, 2,… và số âm -1, -2, … Kích cỡ của số nguyên phụ thuộc vào hệ thống. Trên hệ máy 32 bit là có 4 bytes, hệ thống 64 là 8 bytes. PHP không hổ trợ kiểu số nguyên không dấu như ngôn ngữ C.

Kích cỡ của PHP có thể xác định qua hằng PHP_INT_SIZE. Giá trị lớn nhất là PHP_INT_MAX (được thêm từ PHP 5.0.5) và giá trị nhỏ nhất là PHP_INT_MIN (được thêm vào PHP phiên bản 7.0.0).

1
2
3
4
<?php
echo PHP_INT_SIZE . "\n"; // 8 trên máy 64 bit
echo PHP_INT_MAX . "\n"; // 9223372036854775807
echo PHP_INT_MIN . "\n"; // -9223372036854775808

Kiểu số nguyên có thể biểu diễn bằng kiểu hexa (như 0xAB), bát phân (như 0123), nhị phân (như 0b101) tương tự như ngôn ngữ C.

Kiểu số thực (float)

Trong PHP chỉ có một kiểu số thực là float (hay double).
Ví dụ

1
2
3
4
<?php
$a = 1.234; 
$b = 1.2e3; // 1.2 * 10 ^ 3
$c = 7E-10; // 7 * 10 ^ (-10)

Kích cỡ của kiểu số thực cũng là phụ thuộc vào hệ thống. Giá trị lớn nhất xấp xỉ 1.8e308 với làm tròn tới 14 chữ số thập phân sau dấu phẩy trên hệ thống 64-bit.

Số NAN

Một vài hàm có thể trả về kết quả là NAN (Not a number), tức không phải là số. Để kiểm tra một số có phải là NAN không thì sử dụng hàm is_nan().

Kiểu NULL

Một biến nhận giá trị NULL khi:

  • Gán biến với giá trị NULL
  • Biến khởi tạo mà không gán giá trị (có thể in ra một cảnh báo lỗi)
  • Gọi hàm unset() lên biến đó

Kiểu String

String là một chuỗi các ký tự, mặc định PHP hổ trợ 256 ký tự. Tuy nhiên có thể mã hóa các ký tự unicode khác trên 256 ký tự này.

Có 4 các để khởi tạo string:

  • Sử dụng nháy đơn
  • Sử dụng nháy kép
  • Sử dụng heredoc
  • Sử dụng nowdoc (từ PHP 5.3.0)

String sử dụng nháy đơn

Sử dụng nháy đơn sẽ in ra giống hệt những gì mình viết trong mã

1
2
<?php
var_dump('Xin chào \n bạn');

String sử dụng nháy kép

Sử dụng nháy kép có thể in được các ký tự đặt biệt

1
var_dump("Xin chào \n bạn");

Các ký tự đặc biệt tương tự như ngôn ngữ C. Ví dụ thường dùng là \n (new line), \r (carriage return), \t (tab), \" (double quote), \$ (dollar sign).

Có thể in nội dung của biến trong string khi sử dụng string với dấu nháy kép.

1
2
3
4
<?php
$abc = 12;
$str = "Có $abc quả táo";
var_dump($str); // có 12 quả táo

String sử dụng HEREDOC

Sử dụng cú pháp <<< tiếp theo là một nhãn để in nội dung ra nhiều dòng. Kết thúc nhãn phải sát vô lề của dòng code. Trong heredocs cũng có thể in biến hoặc các ký tự đặt biệt.

1
2
3
4
5
6
7
<?php
$str = <<<EOT
  Đây  một \n câu 
  dài được
  ngắt ra nhiều dòng
EOT; // nhãn này phải sát vô lề
var_dump($str);

Cú pháp nowdocs tương tự tuy nhiên sẽ không in biến hoặc các ký tự đặt biệt. Nhãn của nowdocs được để trong dấu ngoặc đơn.

1
2
3
4
5
6
7
<?php
$str = <<<'EOT'
  Đây là một \n câu 
  dài được
  ngắt ra nhiều dòng
EOT;
var_dump($str);