PHP int类型转换生成错误的值

时间:2013-01-01 14:08:02

标签: php type-conversion

我想在数据库中存储整数值,并且对于$ im使用(int)类型转换$ _POST值。但它评估另一个值而不是提交的整数。

echo (int)0444444;

输出

149796

请帮忙。

3 个答案:

答案 0 :(得分:7)

使用0前缀一个整数意味着它应该被解释为八进制值,即基数为8而不是基数为10.

0444444 (OCT) = 149796 (DEC)

如果要将字符串转换为整数而不是强制转换,可以使用intval(),这可以选择允许您指定基数10。

你的例子中的强制转换是从int到int的强制转换(0444444已被解释为整数),因此你的强制转换是无操作。

答案 1 :(得分:3)

根据其他答案,0前缀会导致PHP将该值解释为八进制。

intval功能可能正是您所需要的。

答案 2 :(得分:2)

前导0的值被视为八进制值。