我已经在零填充的内容(例如0000018)上测试了is_numeric
,它返回true。文档说:
“查找给定变量是否为数字。数字字符串包含 可选符号,任意位数,可选小数部分和 可选的指数部分。因此+ 0123.45e6是有效的数值。 十六进制(例如0xf4c3b00c),二进制(例如0b10100111001),八进制 (例如0777)也允许表示法,但只有没有符号,小数和 指数部分。“
这是否属于任意数字位数?
答案 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位数。我认为你的问题太广泛,没有具体的解决方案,它更像是一个讨论片。