PHP 使用 is_numeric 和 ctype_digit 檢查數字的差別

PHP 要檢查某個變數是否為數字,有兩個 Function 可以使用,那這兩個 Function 的差別是?

PHP 使用 is_numeric 和 ctype_digit 檢查數字的差別

PHP 有 is_numeric 和 ctype_digit 可以檢查字串是否為數字,這兩個 Function 的主要差異在於 負數、小數 的回傳值會有不同。

  • is_numeric:檢查字串是否為數字、數字字串,負數和小數是可以的
  • ctype_digit:檢查「字串」是否「全部都是」數字,負數和小數會是 false

註:ctype_digit 丟進去的變數需要是字串型態,數字型態會回傳 false

<?php
$a = 123;
var_dump(is_numeric($a));  // true
var_dump(ctype_digit($a)); // false

$a = '123';
var_dump(is_numeric($a));  // true
var_dump(ctype_digit($a)); // true

$a = '0123';
var_dump(is_numeric($a));  // true
var_dump(ctype_digit($a)); // true

$a = 0.123;
var_dump(is_numeric($a));  // true
var_dump(ctype_digit($a)); // false

$a = -123;
var_dump(is_numeric($a));  // true
var_dump(ctype_digit($a)); // false

$a = 'abc';
var_dump(is_numeric($a));  // false
var_dump(ctype_digit($a)); // false
?>                                                                                                                                                                           

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料