在PHP中考虑以下几点:
$num = 011;
echo $num; // 9
我可以得到$num
作为 10 进制的数字,例如:
decoct($num);
因此,您可以告诉 PHP 会自动转换为基数 10。如果我想防止不需要的八进制数字,它们会自动转换为小数,该怎么办?如果 9 和 11 都被强制转换为(字符串)并且正则表达式匹配为有效数字怎么办?
如果我让员工在后端使用我的 API 使用数字处理代码,这可能是一个真正的问题。有没有办法在它前面的0
之前测试该数字,它被转换了?请帮忙。
当 PHP
的源代码解析器在 PHP 源代码中遇到字符串(如 011
)时,它会将结果值解释为八进制常量,如以下单行所示:
php -r '$foo=011; print (int)$foo; print "'n";'
9
但是,如果相同的值显示为"文本字符串",则它将被解释(由运行时库,而不是由解析器)解释为基数 10:
php -r '$foo="011"; print (int)$foo; print "'n";'
11
任何呈现在"您的 API"的值都应该"以字符串形式"到达,就像在第二种情况下一样,因此始终被解释为以 10 为基数的数字,无论它是否包含前导零。(呼!!"对你好!"