如何正确解析PHP中的整数?

gre*_*emo 8 php int casting

我可以使用intval,但根据文档:

尽管这取决于字符串最左边的字符,但字符串很可能会返回0.整数投射的通用规则适用.

...并且要解析的值可以是0,即我无法区分零和a string.

$value1 = '0';
$value2 = '15';
$value3 = 'foo'; // Should throw an exeption
Run Code Online (Sandbox Code Playgroud)

真正的问题是:我如何解析字符串并区分一个string强制转换0为零和一个零本身?

Tim*_*per 10

在下面的代码中,$int_value将设置为nullif $value不是实际的数字字符串(基数为10和正数),否则将设置为整数值$value:

$int_value = ctype_digit($value) ? intval($value) : null;
if ($int_value === null)
{
    // $value wasn't all numeric
}
Run Code Online (Sandbox Code Playgroud)