<?php
$first=1+"\x10";
echo $first."<br>";
echo "ghyghost";
$first1=1+"\x35";
echo $first1."<br>"
?>
1和6呢,为什么啊,

解决方案 »

  1.   

    <?php
    $first=1+"\x10";
    echo $first."<br>";
    echo "ghyghost";
    $first1=1+"\x35";
    echo $first1."<br>";
    $first2=1+"0x\x41\x31";
    echo $first2."<br>";
    ?>
    补充一下为什么是1,6,162啊,
      

  2.   

    手册:
    ======================
    字符串转换为数值
    当一个字符串被当作数字来求值时,根据以下规则来决定结果的类型和值。 如果包括“.”,“e”或“E”其中任何一个字符的话,字符串被当作 float 来求值。否则就被当作整数。 该值由字符串最前面的部分决定。如果字符串以合法的数字数据开始,就用该数字作为其值,否则其值为 0(零)。合法数字数据由可选的正负号开始,后面跟着一个或多个数字(可选地包括十进制分数),后面跟着可选的指数。指数是一个“e”或者“E”后面跟着一个或多个数字。 
    <?php
    $foo = 1 + "10.5";                // $foo is float (11.5)
    $foo = 1 + "-1.3e3";              // $foo is float (-1299)
    $foo = 1 + "bob-1.3e3";           // $foo is integer (1)
    $foo = 1 + "bob3";                // $foo is integer (1)
    $foo = 1 + "10 Small Pigs";       // $foo is integer (11)
    $foo = 4 + "10.2 Little Piggies"; // $foo is float (14.2)
    $foo = "10.0 pigs " + 1;          // $foo is float (11)
    $foo = "10.0 pigs " + 1.0;        // $foo is float (11)
    ----------------------------------------------------------hexdec
    (PHP 3, PHP 4, PHP 5)hexdec -- 十六进制转换为十进制
    说明
    number hexdec ( string hex_string )
    返回与 hex_string 参数所表示的十六进制数等值的的十进制数。hexdec() 将一个十六进制字符串转换为十进制数。所能转换的最大数值为 7fffffff,即十进制的 2147483647。PHP 4.1.0 开始,该函数可以处理大数字,这种情况下,它会返回 float 类型。 hexdec() 将遇到的所有非十六进制字符替换成 0。这样,所有左边的零都被忽略,但右边的零会计入值中。 echo hexdec("\x10");//output 0
    echo hexdec("\x35");//output 5
    echo hexdec("0x\x41\x31");//output 161
     
      

  3.   

    \x10 转换成10进制是 16 ASCII码的值是DLE 根据字符串和数字相加规则 1+DLE=1\x35转换成10进制为53 ASCII码的值为5根据规则
    1+"5" =60x\x41\x31 其中 \x41转换换成ASCII值为A \x31转换后为1则字符串 "0xA1" 转换成10进制为1611+161 = 162