使用类型转换

与 PHP 中的许多事情一样,有很多方法可以实现相同的最终目标,检查变量是否为数字也是如此。
有些方式比其他方式鲜为人知。

我们还可以使用类型转换检查变量,它的工作原理是将 int 软件包在变量前面的括号中,然后使用类型比较运算符 (===):

$number = '33';
if ($number === (int) $number) {
    echo 'Dealing with a number.';
} else {
    echo 'Not a number!';
}

上面的结果应该是:Not a number!,因为原始变量被声明为字符串。

并不是建议这样做,但对于了解类型转换很有用。

区别

乍一看,使用 is_int 和 preg_match 之间可能没有区别,但实际上是有区别的!

如果我们使用 preg_match(),我们将不会验证变量的类型。

相反,将数字声明为字符串,$number = '44'; ,以及声明为整数的数字 $number = 44; 将被接受。

如果改为使用 is_int(),则只会检查变量的类型。

如何检查PHP变量是否为数字

要检查变量是否为数字,我们可以使用 is_int 函数,但如果我们想要进行更复杂的验证,我们也可以使用带有 preg_match 的正则表达式。

is_int() 函数之所以起作用,是因为 int 或者整数是一个数字。

检查它是使用 if 语句的简单问题:

$number = 2323;
if(is_int($number)) {
 echo 'Dealing with a number.';
} else {
 echo 'Not a number!';
}

检查和验证数字的另一种方法是使用正则表达式,如果我们想要更复杂的话。
以下示例使用 preg_match 执行基本相同的验证,而不检查变量的类型:

$number = 33;
if(preg_match('|^[0-9]+$|', $number)) {
  echo 'Dealing with a number.';
} else {
  echo 'Not a number!';
}

这个正则表达式 ^[0-9]+$基本上检查具有一位或者多位数字 (+) 的数字,并允许在变量中使用 0 到 9 之间的所有内容。
最后,有趣的帽子 ^ 符号标志着变量的开始,而美元符号 $标志着变量的结束。

如果我们在正则表达式中省略了开始或者结束标记,我们最终可能会允许(匹配)比预期更多的输入。

日期:2020-06-02 22:16:48 来源:oir作者:oir