Làm cách nào để kiểm tra xem giá trị có phải là số nguyên trong php không?

Hãy xem xét nhiệm vụ đơn giản này. bạn nhận được một biến từ một nguồn không xác định [biểu mẫu, cơ sở dữ liệu, v.v.] phải là một số nguyên hợp lệ. Nó có thể là một số nguyên dương hoặc âm và được lưu trữ trong một chuỗi hoặc một số nguyên, nhưng nó phải là một số nguyên thực được tạo thành từ các chữ số. Đây là danh sách kiểm tra của chúng tôi

  • Chỉ xác thực số nguyên, không phải số float, chuỗi, mảng hoặc booleans
  • Cho phép số nguyên dương và âm
  • Không cho phép ký hiệu thập lục phân, kỹ thuật và các ký hiệu khác
  • Cho phép chuỗi và int làm đầu vào

PHP cung cấp cho chúng ta các cách sau để thực hiện nhiệm vụ này gần như nhưng không hoàn toàn

  • if[ctype_digit[ltrim[[string]$int, '-']]]{
     echo["This is a valid integer"];
    }
    
    5 hoặc
    if[ctype_digit[ltrim[[string]$int, '-']]]{
     echo["This is a valid integer"];
    }
    
    6
  • if[ctype_digit[ltrim[[string]$int, '-']]]{
     echo["This is a valid integer"];
    }
    
    7
  • biểu thức chính quy
  • if[ctype_digit[ltrim[[string]$int, '-']]]{
     echo["This is a valid integer"];
    }
    
    8
  • if[ctype_digit[ltrim[[string]$int, '-']]]{
     echo["This is a valid integer"];
    }
    
    9

Giả sử bạn muốn xác thực rằng một biến phù hợp với hóa đơn. Bạn làm nghề gì?

Phản xạ đầu tiên của bạn là thử dùng

if[ctype_digit[ltrim[[string]$int, '-']]]{
 echo["This is a valid integer"];
}
5, còn được gọi là
if[ctype_digit[ltrim[[string]$int, '-']]]{
 echo["This is a valid integer"];
}
6, nhưng bạn đã nhầm. Các hàm này sẽ trả về false cho một chuỗi, ngay cả khi nó chứa một số nguyên. Trước tiên, bạn có thể truyền chuỗi của mình thành một số nguyên bằng
if[ctype_digit[ltrim[[string]$int, '-']]]{
 echo["This is a valid integer"];
}
1, sau đó áp dụng
if[ctype_digit[ltrim[[string]$int, '-']]]{
 echo["This is a valid integer"];
}
5, nhưng vì PHP sẽ truyền khá nhiều thứ mà không gây ra lỗi, nên bạn có thể là một mảng và dù sao thì nó cũng sẽ truyền thành 0 hoặc 1

Khỏe. Điều đó có ý nghĩa. Bây giờ thì sao về ________ 17?

Điều đó để lại cho chúng tôi ba lựa chọn.

if[ctype_digit[ltrim[[string]$int, '-']]]{
 echo["This is a valid integer"];
}
8,
if[ctype_digit[ltrim[[string]$int, '-']]]{
 echo["This is a valid integer"];
}
9 và biểu thức chính quy. Sử dụng biểu thức chính quy sẽ chậm, không thể đọc được và quá mức cần thiết cho một nhiệm vụ đơn giản như vậy, vì vậy hãy xem
if[ctype_digit[ltrim[[string]$int, '-']]]{
 echo["This is a valid integer"];
}
8.
if[ctype_digit[ltrim[[string]$int, '-']]]{
 echo["This is a valid integer"];
}
8 tương đương với

1, điều này thật tuyệt, ngoại trừ việc nó không cho phép các giá trị âm và nó chỉ hoạt động với các chuỗi

Điều đó không hoàn toàn dễ đọc, vì vậy hãy thử tùy chọn cuối cùng của chúng tôi,

if[ctype_digit[ltrim[[string]$int, '-']]]{
 echo["This is a valid integer"];
}
9. Có vẻ như
if[ctype_digit[ltrim[[string]$int, '-']]]{
 echo["This is a valid integer"];
}
9 là đối sánh gần nhất, nhưng nó không hoàn hảo vì nó cho phép

4, nhưng chặn

5 [đã sửa trong PHP 5. 4. 11],

6 và

7. Đối với hầu hết các trường hợp, có vẻ như
if[ctype_digit[ltrim[[string]$int, '-']]]{
 echo["This is a valid integer"];
}
9 vẫn là chức năng tốt nhất để sử dụng

Nếu những nhược điểm này phù hợp với bạn, thì đây là đoạn mã bạn nên sử dụng

if[filter_var[$value, FILTER_VALIDATE_INT] !== false]{
 echo["This is a valid integer"];
}

Nếu bạn cũng muốn cho phép các giá trị như


5,

6 và

7, nhưng muốn chặn

4, hãy sử dụng
if[ctype_digit[ltrim[[string]$int, '-']]]{
 echo["This is a valid integer"];
}
8 như thế này để thay thế

if[ctype_digit[ltrim[[string]$int, '-']]]{
 echo["This is a valid integer"];
}

Đúng rồi. Đây là cách bạn kiểm tra một số nguyên trong PHP. Đơn giản nhỉ?

Đây là thử nghiệm nhanh mà tôi đã sử dụng trên máy chủ thử nghiệm cũ nát của mình. Như bạn có thể thấy,

if[ctype_digit[ltrim[[string]$int, '-']]]{
 echo["This is a valid integer"];
}
8 là phương pháp duy nhất hoạt động 100% thời gian, mặc dù nó hoàn toàn không thể đọc được

Làm cách nào để xác thực đầu vào số nguyên trong PHP?

PHP có hàm filter_var[] để xác thực các biến. .
25 [Số nguyên] sẽ không bị thay đổi
"25" [chuỗi] sẽ được chuyển thành 25 [Số nguyên]
25. 11 [Float] sẽ trả về false vì chúng không phải là số nguyên
đúng [Boolean] sẽ trả về 1 [Số nguyên]
false [Boolean] sẽ trả về false [Boolean]

is_int trong PHP là gì?

is_int[giá trị $ hỗn hợp]. bool . Tìm xem kiểu của biến đã cho có phải là số nguyên hay không . Ghi chú. Để kiểm tra xem một biến là một số hay một chuỗi số [chẳng hạn như đầu vào biểu mẫu, luôn là một chuỗi], bạn phải sử dụng is_numeric[].

Chủ Đề