【发布时间】:2011-12-18 19:03:46
【问题描述】:
这对我来说听起来很奇怪:
$test_1 = 'string';
$test_2 = '0';
var_dump(intval($test_1)); // Output: int 0
var_dump(intval($test_2)); // Output: int 0
$can_cast = intval($test_2) ? 'sure' : 'nope'; // Wrong!!!
因此,string 到 int 的转换 intval 返回 0。很好,但是当字符串实际上可以强制转换为零(因为 是 为零)因此有效时,它也会返回 0。
如何区分两者(允许'0'作为字符串并拒绝'字符串')?
编辑:好的,让我说我知道我可以使用is_numeric。 But is_numeric('2.3') 返回true,所以它无能为力。并且:
$test = '0';
var_dump(is_numeric($test) && intval($test)); // Fail!!!
【问题讨论】:
-
is_numeric()可能适合您? -
'0.0'、'0.1'或'0foo'怎么样? -
@ÁlvaroG.Vicario 我已经编辑了问题,你明白了。
-
“失败!!!”是什么意思对于 is_numeric 示例?果然是假的吧?
-
intval 是一个转换,不是检查,所以它总是返回一个整数。因此,不可能从 intval 知道参数是否为整数 - 这不是为了那个。
标签: php string casting integer