2

我的php版本:

➜  ~ php -v
PHP 7.3.1 (cli) (built: Jan 10 2019 13:16:34) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.1, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.1, Copyright (c) 1999-2018, by Zend Technologies

我不明白为什么函数中的间隔值is_numeric会这样?

➜  ~ php -a

php > var_dump(is_numeric('0012432'));
bool(true)
php > var_dump(is_numeric(' 0012432'));
bool(true)
php > var_dump(is_numeric('0012432 '));
bool(false)
4

2 回答 2

2

此函数处理前导空格的方式与 is_int()、is_float()、is_real()、is_long() 和 is_double() 不同。

is_numeric(" 12345") = true
is_int(" 12345") = false
is_float(" 12345") = false
is_real(" 12345") = false
is_long(" 12345") = false
is_double(" 12345") = false

我发现了针对这些情况的错误报告,不确定他们是否会解决这个问题,

错误报告

于 2019-02-11T19:49:29.230 回答
0

接受数字字符串的核心 PHP 语言的所有其他部分也是如此。这是一个令人讨厌的不一致,但它是故意的,并且多年来一直如此。我个人打算在未来的版本中解决这个问题。

于 2019-02-28T20:35:25.130 回答