代码之家  ›  专栏  ›  技术社区  ›  Pushkar

使用chr的程序输出不一致

php
  •  -1
  • Pushkar  · 技术社区  · 7 年前

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

    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));
    

    给出如下

    /var/www/html/x.php:2:
    array (size=1)
      'x' => string '070' (length=3)
    /var/www/html/x.php:4:string 'F' (length=1)
    

    2 回复  |  直到 7 年前
        1
  •  1
  •   DeDee    7 年前

    70 因为精确的整数值对应于 十进制的 F 虽然 070 八进制 ASCII码 8

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

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

    http://php.net/manual/en/language.types.integer.php

    URI参数 070 从 string 到 integer 适当地修剪引线 0 70 ,CLI解释器按字面意思理解它。

        2
  •  -1
  •   Redback    7 年前
    echo chr('070'); //string return F
    echo chr(070); //integer return 8
    
    推荐文章