【问题标题】:php is_numeric zero filled strings (0000018)php is_numeric 零填充字符串 (0000018)
【发布时间】:2015-02-12 16:20:14
【问题描述】:

我已经在诸如 0000018 之类的零填充整数上测试了 is_numeric,它返回 true。文档说:

"查找给定变量是否为数字。数字字符串由 可选符号、任意位数、可选小数部分和 可选指数部分。因此 +0123.45e6 是一个有效的数值。 十六进制(例如 0xf4c3b00c)、二进制(例如 0b10100111001)、八进制 (例如 0777)也允许使用符号,但只能不带符号、小数和 指数部分。”

这会属于任意位数部分吗?

【问题讨论】:

  • 为什么会返回false? is_numeric(0000018) 必须返回 true,否则我没有得到你的问题

标签: php


【解决方案1】:

两种情况(字符串和(无效)八进制数)都将返回 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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-02-17
      • 2011-03-08
      • 2011-05-27
      • 2018-11-14
      • 2010-09-24
      • 2017-04-04
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多