Mục lục
Toggle=> Hàm is_int() trong PHP dùng để kiểm tra biến có thuộc kiểu số nguyên hay không. Hàm tương thích được với PHP4, PHP5, PHP7
cú pháp:
is_int ( mixed $var ) : bool
Trong đó:
$var là biến cần kiểm tra.
Hàm is_int()
trong PHP sẽ kiểm tra biến có thuộc kiểu số nguyên hay không. Nếu biến thuộc kiểu số nguyên hàm sẽ trả về TRUE, ngược lại nếu biến không thuộc kiểu số nguyên hàm sẽ trả về FALSE.
VD1:
Code:
$var = 24; if (is_int($var)) { echo 'biến thuộc kiểu số nguyên'; }else{ echo 'biến không thuộc kiểu số nguyên'; } // Đoạn code trên gồm một biến cần kiểm tra là $var có giá trị = 24. // Nếu $var là số nguyên kết quả => biến thuộc kiểu số nguyên // Nếu $var không phải số nguyên kết quả => biến không thuộc kiểu số nguyên
Kết quả:
biến thuộc kiểu số nguyên
VD2
Code:
$var = 24.3535; if (is_int($var)) { echo 'biến thuộc kiểu số nguyên'; }else{ echo 'biến không thuộc kiểu số nguyên'; }
Kết quả:
biến không thuộc kiểu số nguyên // Do biến trên có là một số có dấu thập phân.
VD3
Code:
$var = 'codetutam.com'; if (is_int($var)) { echo 'biến thuộc kiểu số nguyên'; } else{ echo 'biến không thuộc kiểu số nguyên'; }
Kết quả:
biến không thuộc kiểu số nguyên // Do giá trị của biến trên là một chuỗi ký tự string.
is_bool () – Kiểm tra một biến có phải kiểu dữ liệu boolean.
is_float () – Xác định một biến có kiểu số thập phân
is_numeric () – Kiểm tra một biến có phải kiểu số
is_string () – Xác định nếu một biến có phải kiểu chuỗi
is_array () – Xác định nếu một biến là một mảng
is_object () – Xác định nếu một biến có kiểu đối tượng
Tôi đã thấy rằng is_int() không hoạt động hoàn toàn như tôi mong đợi sau một hồi tìm kiếm trên mạng một hàm gọi là isInteger() do một anh lập trình đẹp trai nào đó viết.
Nội dung hàm:
function isInteger($input){ return(ctype_digit(strval($input))); } // Trong đó hàm $input là giá trị cần kiểm tra cần kiểm tra. // ctype_digit() là một hàm đùng để Kiểm tra xem tất cả các ký tự trong chuỗi, // văn bản được cung cấp có phải là số không. // strval() là hàm php Lấy giá trị của một biến, ở định dạng chuỗi
Tìm hiểu về hàm ctype_digit() hay strval()
Ví dụ về hàm:
<?php function isInteger($input){ return(ctype_digit(strval($input))); } // Sử dụng hàm is_int var_dump(is_int(23)); //bool(true) var_dump(is_int("23")); //bool(false) var_dump(is_int(23.5)); //bool(false) var_dump(is_int(NULL)); //bool(false) var_dump(is_int("")); //bool(false) // Sử dụng hàm isInteger var_dump(isInteger(23)); //bool(true) var_dump(isInteger("23")); //bool(true) var_dump(isInteger(23.5)); //bool(false) var_dump(isInteger(NULL)); //bool(false) var_dump(isInteger("")); //bool(false) ?>
– Ta thấy hai hàm có sự khác nhau ở var_dump(is_int(“23”)); nhìn vào đây giá trị này là một số nhưng is_int() hiểu rằng đây là một chuỗi ký tự (là dạng string không phải số nguyên) => is_int() trả về false.
– Hàm isInteger() Thực hiện hai bước dùng strval() lấy giá trị của một biến ở dạng string() => dùng ctype_digit() để kiểm tra.
Hàm ctype_digit() kiểm tra tất cả các giá trị trong một chuỗi chuyền vào có phải số không => Khi truyền một chuổi string thì hàm sẽ lấy giá trị bên trong để kiểm tra nếu giá trị bên trong là số thì trả về true. Khi từ ban đầu truyền vào dịnh dạng đã là số nguyên thì ctype_digit() sẽ trả về false luôn.
Ví dụ về hàm ctype_digit():
var_dump(ctype_digit(23)); //bool(false)=> False vì giá trị truyền vào là kiểu định dạng số mà không phải sting var_dump(ctype_digit("23")); //bool(true)=> true vì giá trị truyền vào và bên trong chuỗi string là số. var_dump(ctype_digit(23.5)); //bool(false)=> False vì giá trị truyền vào là kiểu định dạng số var_dump(ctype_digit(NULL)); //bool(false)=> False vì giá trị truyền vào là kiểu định dạng số var_dump(ctype_digit("")); //bool(false)=> False giá trị bên trong string là rỗng không phải là số.
2. Điều cần lưu ý.
– Hàm is_int() hoạt động theo kiểu signed (Phụ thuộc vào môi trường hoạt động) vì vậy trên mỗi môi trường thì hàm lại có giá trị khác nhau.
+ Môi trường 32-bit có max value int là 2^32/2 = 2147483647 => Chỉ kiểm tra được các số từ 2147483647 trở xuống.
+ Môi trường 64-bit có max value int là 2^64/2 = 9223372036854775807 => Kiểm tra được các số từ 9223372036854775807.
Ví dụ mô tả:
// môi trường 32-bit <?php is_int( 2147483647 ); // true is_int( 2147483648 ); // false is_int( 9223372036854775807 ); // false is_int( 9223372036854775808 ); // false ?> // Môi trường 64-bit <?php is_int( 2147483647 ); // true is_int( 2147483648 ); // true is_int( 9223372036854775807 ); // true is_int( 9223372036854775808 ); // false ?>
=> Khi ta dùng is_int() không thể biết nó sẽ được hoạt động trên môi trường 32-bit hay 64-bit để đảm bảo một số sẽ được kiểm tra như trên môi trường 64-bit thì hãy sử dùng hàm is_int() kết hợp với hàm is_float()
<?php $small = 2147483648; if( is_int($small) || is_float($small) ){ return true; } // Vượt qua mọi mọi môi trường 32-bit ?>
Hi vọng qua bài viết này sẽ giúp các bạn đã hiểu hơn về hàm is_int() rong PHP biết cách sử dụng đúng cách đúng trường hợp.
Nếu bạn thấy bài viết hay và có ý nghĩa hãy like và chia sẻ bài viết này để mọi người cùng nhau học tập nhé.
Cảm ơn bạn đã ghé thăm codetutam.com.
Bình luận: