PHP 中的相同字符串在使用按位函数时回显到屏幕时给出 2 个不同的输出

Same string in PHP giving 2 different outputs when echoed to screen when using bitwise functions

目前,我正在 PHP 中使用 XOR 按位函数,并试图确定我没有得到预期输出的原因。我对这些值进行了硬编码,发现在调用包含回显的函数时,我的字符串中只得到数字。但是如果我回显一个包含相同数据的变量,我会得到预期的输出。

<?php
    include "bitwise.php";
    echo $t . "<br>";
    temp("1234");   
?>

我从上面的代码调用下面的代码。

$t = (((((("1324" ^ $h1) . "1234") ^ $h2) . ("1324" ^ $h1)) ^ $h3) . ((("1324" ^ $h1) . "1234") ^ $h2) ^ $h5);

function temp($str)
{
    $test = (((((("1324" ^ $h1) . "1234") ^ $h2) . ("1324" ^ $h1)) ^ $h3) . ((("1324" ^ $h1) . "1234") ^ $h2) ^ $h5);
    echo $test;

    return $test;
}

$h# 是包含一堆字符的字符串,这些字符在两次尝试中都保持不变。输出是:

$t
Le7KXh}*J;GKUqzo9

$test
9223372036854775807

我想知道为什么我在第二个例子中只得到数字

由于变量 h1h5 是在函数范围之外定义的,因此它们被解释为字符串而不是它们的值。

尝试将以下字符串添加到您的函数中:

global $h1, $h2, $h3, $h4, $h5;

它应该可以工作。 查看此代码以供参考:http://sandbox.onlinephpfunctions.com/code/a801c15422b69cc2d7ba067e70a5077abe03c1a9