- Các kiểu dữ liệu trong PHP
- Kiểu int - số nguyên
- Kiểu float - số thực
- Kiểu boolean - logic
- Kiểu string - chuỗi ký tự
- Kiểu array - Mảng
- Kiểu object - Đối tượng
- Kiểu callable - Kiểu code thi hành được
- Kiểu iterable - Duyệt qua được
- Kiểu resource - Tài nguyên
- Kiểu NULL - Rỗng
- Sự lỏng lẻo của kiểu dữ liệu trong PHP
- Ém kiểu chuyển kiểu PHP
Các kiểu dữ liệu trong PHP
Trong PHP hiện tại cung cấp 10 loại kiểu dữ liệu ban đầu, kiểu dữ liệu được dùng để xác định loại dữ liệu lưu trữ trong biến, trong tham số hàm, dữ liệu trả về từ biểu thức, hàm ... Bảng sau tóm tắt các kiểu dữ liệu trong php:
Tên kiểu | Mô tả |
---|---|
Nhóm các kiểu dữ liệu đơn giản (scalar) | |
int |
Kiểu số nguyên , tùy thuộc vào hệ thống 32/64 bít mà có thể chiếm 4 hay 8 byte (hằng số PHP_INT_SIZE). Số nguyên lớn nhất và nhỏ nhất biểu diễn được lấy qua hằng số PHP_INT_MAX và PHP_INT_MIN. Trong PHP bạn có thể nhập số nguyên ở cơ số 10 (dec), 16(hex), 8(octa) kể cả cơ số 2 (nhị phân). $number = 2233; // Số nguyên thập phân (chủ yếu bạn viết ở dạng này). $number = 1_234_567; // Số nguyên thập phần từ PHP 7.4 có thể dùng _ để phân nhóm (12345678) $number = 0123; // Viết 0 đầu tiên, thì đó là số nguyên ở dạng bát phân octa $number = 0o123; // Bát phân trong PHP 8.1 có thể bắt đầu bởi 0O, 0o $number = 0x1A; // Số hex (cơ số 16) viết bắt đầu bởi 0x $number = 0b11111111; // Số nhị phân bắt đầu bở 0b Convert các cơ số: Trong PHP có các hàm để lấy chuỗi biểu diễn số ở các dạng cơ số khác nhau: /* bindec(), decbin() : convert giữa thập phân và nhị phân octdec(), decoct() : convert giữa octal và thập phân dechex(), hexdec() : convert giữa thập phân và hex base_convert() : convert giữa các cơ số */ echo dechex(2020); // Chuỗi từ số thập phân sang hex (không gồm 0x): 7e4 echo hexdec('fff'); // Số dạng hex (không 0x) chuyểng sang số thập phân $number = 'fff'; # chuỗi biểu diễn số nguyên cơ số 16 echo base_convert($number, 16, 2); # Chuyển từ cơ số 16 sang nhị phân (111111111111) Một giá trị số nguyên vượt quá khả năng biểu diễn của nó, PHP có thể chuyển nó về kiểu số thực float. $number = PHP_INT_MAX; $number = $number + 1; // cộng hai số nguyên var_dump($number); // float 9.2233720368548E+18 : kết quả là số thực do tràn số |
float |
Kiểu số thực trong PHP (số thực dấu chấm động - float hoặc double): được nhập vào với dấu châm, phân tách phần nguyên và thập phân, ví dụ $PI = 3.14 |
boolean |
Kiểu số logic boolean : Boolean thì chỉ nhận hai giá trị là biểu diễn đúng/sai, on/off ...
là if (TRUE) print("Hello Khi cần convert một kiểu dữ liệu khác (int, string ...) sang boolean đúng - sai
phụ thuộc vào giá trị của dữ liệu đó, nó nhận
Các trường hợp khác convert thì nhận $test = (bool)''; var_dump($test); // boolean false |
string |
Kiểu chuỗi (xâu) ký tự : Chuối ký tự là tập hợp các ký tự tạo thành dòng chữ, dòng text, văn bản. Chi tiết về chuỗi ký tự xem tại: chuỗi ký tự trong PHP |
Nhóm các kiểu dữ liệu phức tạp (compound) | |
array |
Mảng - array là dữ liệu có cấu trúc, chứa thông tin ánh xạ giữa các key(khóa) và giá trị (value). Về mảng và các phép toán trên mảng xem chi tiết tại: Mảng trong PHP |
object |
Kiểu object: Đối tượng đó là thực thể do PHP sinh ra từ các định nghĩa lớp, thực thể này có thể chứa trong nó dữ liệu và các hàm thi hành. Object liên quan đến lập trình OOP, xem chi tiết tại: Hướng đối tượng trong PHP Chuyển kiểu sang object : đối tượng object là tham chiếu (không phải tham trị), trong PHP các kiểu dữ liệu khác có thể chuyển về object với cú pháp: $ob = (object)$value; Nó sẽ tạo ra một object lớp đặc biệt stdClass có thuộc tính phụ thuộc vào giá trị convert. Ví dụ các biến scalar (đơn giản) thì object có thuộc tính scalar, mảng thì có thuộc tính là các key $ob = (object)"XuanThuLab"; // Covert chuỗi sang object var_dump($ob); // object(stdClass)[503] // public 'scalar' => string 'XuanThuLab' echo $ob->scalar; // XuanThuLab $ob = (object)[1,2,3]; // Covert mảng sang object var_dump($ob); /* object(stdClass)[503] public '0' => int 1 public '1' => int 2 public '2' => int 3 */ |
callable |
Kiểu callable: Tham chiếu tới đối tượng có thể gọi thực thi, gọi là các callback. Kiểu này thường dùng khai báo trong tham số hàm, kiểu trả về. Chi tiết về callback/callable xem tại: Sử dụng Callback, Callable // Khai báo hàm có tham số callable function tinhtoan(callable $pheptoan, $number) { echo 'Kết quả là: ' . $pheptoan($number); } tinhtoan('sqrt', 100); // In ra căn bậc 2 của 100 |
iterable |
Kiểu iterable: (Duyệt qua được), đây là kiểu có thề dùng với vòng lặp foreach, tất cả các đối tượng triển khai từ Traversable hoặc các mảng xếp vào kiểu này. // Khai báo hàm trả về kiểu iterable function test(): iterable { return ['MON', 'TUE' 'WED']; } |
Nhóm các kiểu dữ đặc biệt | |
resource |
Kiểu resource Biến kiểu dữ liệu resource nó nắm giữ thông tin tham chiếu tới các tài nguyên ngoài phạm vị PHP (như kết nối dữ liệu, kết nối mạng ...) |
NULL |
Đây là kiểu dữ liệu đặc biệt, cho biết biến chẳng có giá trị nào. Một biến có thể nhận null khi: $yourvar = null; // gán bằng null $name = 'XUANTHULAB'; unset($name); // gọi hàm unset với biến Một biến là NULL thì có ý nghĩa sử dụng sau:
|
Kiểu dữ liệu phức tạp thì có thể mang trong nó các kiểu dữ liệu khác còn kiểu đơn giản thì không.
Sự lỏng lẻo của kiểu dữ liệu trong PHP
Một biến trong PHP không có kiểu cố định, kiểu của nó phụ thuộc vào giá trị dữ liệu nó đang lưu trữ. Biến đang ở kiểu này, nếu gán giá trị kiểu khác thì biến sẽ có kiểu dữ liệu thay đổi theo. Khi giá trị gán vào một biến, PHP sẽ có gắng convert dữ liệu sao cho phù hợp tùy thuộc từng ngữ cảnh: số, chuỗi, giá trị logic ...
Chuyển thành số : trong biểu thức sử dụng các phép toán số học + - * / ... thì giá trị của biến sẽ cố gắng chuyển thành số:
$a = "5"; // Chuỗi ký tự "5" $b = 6; echo $a * $b; // in ra 30; nó đã chuyển chuỗi "5" thành số 5
Chuyển thành chuỗi : khi bạn sử dụng các hàm có tham số là chuỗi (như echo, print ..), các phép toán về chuỗi (như nối chuỗi .) thì giá trị lưu trong biến (dù là kiểu gì) thì PHP sẽ cố gắng chuyển nó thành chỗi.
$number = 123.1234; // số kiểu float echo str_replace('3.1234', '4.321', $number); // in ra: 124.321; $number tự convert thành chuỗi
Chuyển thành kiểu logic bool : nếu biểu thức sử dụng các phép toán logic (và, hoặc ...), hay tham số hàm cần kiểu logic, nếu biến xuất hiện tại đây nó sẽ được tự động chuyển sang boolean.
$var = 1; if ($var == true) { echo 'It\'s true'; }
Chuyển thành kiểu logic bool : nếu biểu thức sử dụng các phép toán logic (và, hoặc ...), hay tham số hàm cần kiểu logic, nếu biến xuất hiện tại đây nó sẽ được tự động chuyển sang boolean.
Ép kiểu chuyển kiểu với PHP
Nếu bạn cần ép kiểu (casting) chuyển kiểu về một kiểu cụ thể do bạn chỉ ra thì sử dụng cú pháp như sau:
$result = (typecast)$value
Trong đó: typecast có thể là: int
(hoặc integer
)
bool
(hoặc boolean
) float
(hoặc double
)
string
(hoặc binary
) array
object
$a = 2000.2020; // $a kiểu float $b = (int)$a; // ép về kiểu int var_dump($b); // int 2000