Та же самая строка в PHP дает 2 разных вывода при выводе на экран при использовании побитовых функций

В настоящее время я работаю с побитовой функцией XOR в PHP и пытаюсь определить причину, по которой я не получаю ожидаемый результат. Я жестко закодировал значения и обнаружил, что при вызове функции, содержащей эхо, я получаю только числа в моей строке. Но если я выведу переменную, содержащую те же данные, я получу ожидаемый результат.

<?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

Я хотел бы знать, почему я получаю только цифры во втором примере

-1

Решение

В качестве переменных h1 в h5 определяются вне области действия функции, они интерпретируются как строка, а не как их значения.

Попробуйте добавить следующую строку в вашу функцию:

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

И это должно работать.
Посмотрите на этот код для справки: http://sandbox.onlinephpfunctions.com/code/a801c15422b69cc2d7ba067e70a5077abe03c1a9

-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]