PHP cung cấp hai loại dữ liệu cơ bản: số nguyên (integer) và số thực dấu phảy động (float/double). Đây là hai trong số bốn kiểu dữ liệu đơn, bao gồm số nguyên, số thực, logic (boolean) và chuỗi (string). Show Kiểu số nguyên integer/int trong PHPInteger là kiểu dữ liệu biểu diễn các số nguyên trong PHP. Dải giá trị của integer phụ thuộc số bit của hệ điều hành. Trên các hệ điều hành 32 bit, số nguyên integer được biểu diễn bởi 32 bit, do đó có dải giá trị từ -2^31 (-2 147 483 648) đến +2^31 – 1 (2 147 483 647). PHP chấp nhận giá trị số nguyên viết ở hệ 10 (mặc định), hệ 2, hệ 8 và hệ 16. Số nguyên ở hệ cơ số 2 được viết với tiền tố 0b (hoặc 0B) và -0b/-0B (với số âm). Ví dụ: php > $bin = 0b1100; php > echo $bin; 12 php > $bin = 0B0011; php > echo $bin; 3 php > Số nguyên ở hệ cơ số 8 được viết với tiền tố 0 – số không (hoặc -0 nếu là số âm). Ví dụ: php > $oct = 0755; php > echo $oct; 493 php > $oct = +010; php > echo $oct; 8 php > Số nguyên ở hệ cơ số 16 được viết với tiền tố 0x hoặc 0X (-0x, -0X với số âm). Ví dụ: php > $hex = 0xff; php > echo $hex; 255 php > $hex = -0xdad; php > echo $hex; -3501 php > $hex = 0X11FF; php > echo $hex; 4607 php > Để kiểm tra giá trị một biến đang chứa có thuộc kiểu số nguyên hay không có thể sử dụng hàm is_int() hoặc is_integer(): php > $i = 100; php > echo is_int($i); 1 php > echo is_integer($i); 1 php > $i = "100"; php > echo is_int($i); // kết quả là chuỗi rỗng -> false php > Bạn cũng có thể sử dụng hàm gettype() để lấy tên kiểu giá trị của biến. Nếu biến chứa số nguyên, kết quả trả về sẽ là chuỗi “integer“. php > $i = 100; php > gettype($i); php > echo gettype($i); integer Kiểu số nguyên trong PHP có hai tên gọi: integer và int. Mặc dù chúng là một nhưng được sử dụng trong các hoàn cảnh khác nhau:
Chuyển đổi dữ liệu về kiểu số nguyênPHP cho phép chuyển đổi dữ liệu từ kiểu chuỗi và logic về số nguyên. Để chuyển đổi, bạn sử dụng phép toán chuyển đổi kiểu (int) hoặc (integer) trước giá trị/biến cần chuyển và gán kết quả cho một biến khác. Quy tắc chuyển đổi như sau:
Hãy xem các ví dụ sau: php > $i = 100; php > gettype($i); php > echo gettype($i); integer php > $i = (int) "1000"; // chuyển đổi kiểu string -> int php > echo gettype($i); integer php > $i = (integer) "10000"; // chuyển đổi kiểu string -> integer php > echo gettype($i); integer php > $i_str = "100a"; // chuỗi này chuyển được thành số nguyên php > $i = (int)$i_str; // phép chuyển đổi này cho kết quả 100 php > echo $i; 100 php > $i_str = "a100"; // chuỗi này không chuyển được php > $i = (int)$i_str; // phép chuyển đổi này cho kết quả 0 php > echo $i; 0 php > $i = (int) true; // chuyển đổi kiểu bool -> int php > echo gettype($i); integer php > echo $i; 1 php > $i = (int) false; php > echo $i; 0 php > Một cách khác để chuyển đổi giá trị về số nguyên là sử dụng hàm intval(). Hãy xem ví dụ sau: php > $dec_str = '1234'; php > $dec = intval($dec_str); // chuyển chuỗi '1234' về số nguyên hệ 10 (mặc định) php > echo gettype($dec); integer php > echo $dec; 1234 php > $hex_str = "ff"; php > $hex = intval($hex_str, 16); // chuyển chuỗi "ff" hệ 16 về số nguyên hệ 10, thu được giá trị 255 php > echo $hex; 255 php > $bin_str = '10000000'; php > $bin = intval($bin_str, 2); // chuyển chuỗi '10000000' hệ 2 về số nguyên hệ 10, thu được 128 php > echo $bin; 128 php > Sự khác biệt giữa chuyển đổi kiểu (int) và intval() nằm ở chỗ, intval có thể chấp nhận chuỗi biểu diễn số ở những hệ cơ số khác, trong khi (int) chỉ hiểu những chuỗi biểu diễn số ở hệ 10. Về hiệu suất thì (int) nhanh hơn intval(). Hai phương pháp trên cũng được dùng để chủ động chuyển đổi từ giá trị số thực về số nguyên. Kiểu số thực float/double trong PHPFloat hay double là tên của kiểu dữ liệu biểu diễn các số thực dấu phẩy động trong PHP. PHP cho phép viết số thực ở một trong hai dạng:
php > $d1 = 1.234; php > $d2 = -1.23456; php > $d3 = -1.23456; php > $d4 = 1.234e2; php > echo $d4; 123.4 php > $d5 = 1234e-2; php > echo $d5; 12.34 php > Để kiểm tra một giá trị có thuộc kiểu số thực hay không, bạn có thể sử dụng hàm is_float() hoặc is_double(). Khi sử dụng hàm gettype() trên biến kiểu số thực sẽ thu được kết quả là ‘double‘. Tương tự, bạn có thể chuyển đổi kiểu từ các kiểu dữ liệu khác (string, int) về kiểu số thực qua phép chuyển đổi kiểu (float) hoặc (double) hoặc qua hàm floatval()/doubleval(). Kiểu số thực trong PHP cũng có hai tên gọi: float và double. Trong các phiên bản PHP trước 7.4 bạn còn gặp tên gọi real. Giống trường hợp số nguyên, tên các kiểu số thực được sử dụng trong những hoàn cảnh khác nhau:
Các phép toán trên kiểu sốPhép toán số họcCả số nguyên và số thực trong PHP đều có chung một số phép toán số học: Giả sử có hai biến $a = 10; $b = 3;
Lưu ý:
Các phép gánGiống như các ngôn ngữ họ C, PHP cũng cung cấp các phép gán +=, -=, *=, /=:
Các phép tăng giảmGiống như C, trong PHP bạn cũng có thể thực hiện các phép toán tăng giảm ++ và –: Phép toán tăng ++ có hai dạng: tăng trước ++$a và tăng sau $a++. Cả hai phép toán tăng này đều cộng thêm một đơn vị vào $a. Sự khác biệt nằm ở chỗ:
php > $a = 1; php > echo ++$a; // thực hiện phép cộng thêm 1 vào $a và trả lại $a (mới) 2 php > $a = 1; php > echo $a++; // trả lại giá trị của $a (cũ) trước rồi mới cộng thêm 1 vào $a 1 php > echo $a; // giờ $a mới có kết quả mới 2 Phép toán giảm — cũng tương tự, bao gồm giảm trước –$a và giảm sau $a–. Khác biệt là nó giảm giá trị của biến đi 1 đơn vị. Các phép so sánhBạn có thể so sánh các giá trị số sử dụng các phép toán so sánh như sau:
Có thể để ý PHP có hai phép toán so sánh khác != và <>. Hai phép toán này không có gì khác biệt nhau. Phép so sánh spaceship không trả lại kết quả logic true/false mà trả về kết quả số nguyên: -1 nếu vế trái nhỏ hơn; +1 nếu vế trái lớn hơn; 0 nếu hai vế bằng nhau. Một điều lưu ý nữa là các phép so sánh bằng và khác trong PHP có thể áp dụng với hai vế thuộc hai kiểu khác nhau! Ví dụ, có thể so sánh chuỗi với số! Ngoài các phép so sánh trên trong PHP còn có các phép toán so sánh tương tự ===, !==. Chúng ta sẽ xem xét kỹ hơn về các phép toán so sánh trong bài học về kiểu boolean. Bạn không nên trực tiếp so sánh == giữa hai số thực do biểu diễn số thực trong máy tính chỉ là gần đúng. Kết luậnTrong bài học này chúng ta đã xem xét chi tiết về kiểu số nguyên và kiểu số thực trong PHP.
+ Nếu bạn thấy site hữu ích, trước khi
rời đi hãy giúp đỡ site bằng một hành động nhỏ để site có thể phát triển và phục vụ bạn tốt hơn. |