php is_numeric零填充字符串(0000018)

时间:2015-02-12 16:20:14

标签: php

我已经在零填充的内容(例如0000018)上测试了is_numeric,它返回true。文档说:

  

“查找给定变量是否为数字。数字字符串包含   可选符号,任意位数,可选小数部分和   可选的指数部分。因此+ 0123.45e6是有效的数值。   十六进制(例如0xf4c3b00c),二进制(例如0b10100111001),八进制   (例如0777)也允许表示法,但只有没有符号,小数和   指数部分。“

这是否属于任意数字位数?

2 个答案:

答案 0 :(得分:4)

两种情况(字符串和(无效)八进制数)都将返回true:

var_dump( is_numeric("0000018") );  //bool(true)
var_dump( is_numeric(0000018) );    //bool(true)

在第一种情况下,它只是一个数字字符串。

手册中的引用(is_numeric()):

  

如果var是数字或数字字符串,则返回TRUE,否则返回FALSE。

在第二种情况下,它是一个八进制数,只是一个无效数,所以这将发生(来自手册Integer):

  

警告:   如果在八进制整数(即8或9)中给出无效数字,则忽略该数字的其余部分

在这种情况下意味着:

0000018 -> 000001 -> 1

答案 1 :(得分:0)

'这'是0000018?任意数量的数字都是任意数字,但肯定会超过16位数。我认为你的问题太广泛,没有具体的解决方案,它更像是一个讨论片。