有没有办法在 PHP 对其进行自动 octdec() 转换之前知道一个数字是否以 0 开头


Is there a way to know if a number starts with 0 before PHP does an automatic octdec() conversion on it?

在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 为基数的数字,无论它是否包含前导零。(呼!!"对你好!"