Php 使用chr的程序输出不一致

Php 使用chr的程序输出不一致,php,Php,我在web和cli中获得了chr()函数的不同输出 使用php-a php > $x = 070; php > echo chr($x); 8 在网上example.com/x.php?x=070 <?php var_dump($_GET); $x=$_GET['x']; var_dump(chr($x)); 为什么两者之间存在差异 70作为精确整数值对应于F的十进制ASCII码,而070作为精确整数值对应于8的八进制ASCII码 在这两种情况下,传递的参数都被解释为整数,

我在web和cli中获得了chr()函数的不同输出

使用php-a

php > $x = 070;
php > echo chr($x);
8
在网上
example.com/x.php?x=070

<?php
var_dump($_GET);
$x=$_GET['x'];
var_dump(chr($x));

为什么两者之间存在差异

70
作为精确整数值对应于
F
十进制ASCII码,而
070
作为精确整数值对应于
8
八进制ASCII码

在这两种情况下,传递的参数都被解释为整数,但是在数字前面加上
0
会使解释器将其处理为八进制数

bin\php>php -r echo(chr(70));
F
bin\php>php -r echo(chr(070));
8
阅读

要使用八进制表示法,请在数字前面加0(零)。要使用十六进制表示法,请在数字前面加上0x。要使用二进制表示法,请在数字前面加0b


URI参数
070
string
转换为
integer
正确地修剪前导的
0
,实际理解值为
70
,CLI解释器按字面理解,原样。

整数vs字符串-参数必须是介于0和255之间的整数。您能否为代码添加一些解释,以便其他人可以从中学习?
>php-r var_dump(chr('070');//字符串(1)“F”
>php-r var_dump(chr(070));//字符串(1)“8”
echo chr('070'); //string return F
echo chr(070); //integer return 8
echo chr('070'); //string return F
echo chr(070); //integer return 8