Strange behaviour with numbers that have a leading zero(带有前导零的数字的奇怪行为)
问题描述
我有一些带有一些整数的 PHP 代码并且一切正常,除非我有 08
或 0X
作为整数.当我把它们放在引号中时,一切都很好.
I have some PHP code with some integers and all works fine, except when I have 08
or 0X
as integer. It all works fine when I put them in quote.
数字示例:
2 //Works fine
08 //Doesn't work
012 //Doesn't work
"08" //Works fine again
"012" //Works fine again
谁能告诉我背后的原因?
Can anyone tell me the reason behind it?
推荐答案
如果你只是写 08 和 09(不带引号)或任何其他以 0 开头的数字,PHP 认为你正在写一个八进制值,而 08 和09 是无效的八进制数.
If you simply write 08 and 09 (without quotes) or any other numeric with a leading 0, PHP believes you're writing an octal value, and 08 and 09 are invalid octal numbers.
http://www.php.net/manual/en/语言.types.integer.php
语法
整数可以指定为十进制(以 10 为底)、十六进制(以 16 为底)、八进制(以 8 为基数)或二进制(以 2 为基数)表示法,前面可选符号(- 或 +).
Integers can be specified in decimal (base 10), hexadecimal (base 16), octal (base 8) or binary (base 2) notation, optionally preceded by a sign (- or +).
从 PHP 5.4.0 开始提供二进制整数文字.
Binary integer literals are available since PHP 5.4.0.
要使用八进制表示法,请在数字前加上 0(零).使用十六进制表示法 在数字前加上 0x.使用二进制符号 在数字前加上 0b.
To use octal notation, precede the number with a 0 (zero). To use hexadecimal notation precede the number with 0x. To use binary notation precede the number with 0b.
[...]
警告:在 PHP 7 之前,如果在八进制整数(即 8 或 9)中给出了无效数字,则忽略该数字的其余部分.从 PHP 7 开始,会发出解析错误.
Warning: Prior to PHP 7, if an invalid digit was given in an octal integer (i.e. 8 or 9), the rest of the number was ignored. Since PHP 7, a parse error is emitted.
这篇关于带有前导零的数字的奇怪行为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:带有前导零的数字的奇怪行为
基础教程推荐
- 在多维数组中查找最大值 2021-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01