尝试将Javascript递归转换为PHP(简单)

尝试将Javascript递归转换为PHP(简单),javascript,php,recursion,Javascript,Php,Recursion,我必须为一个学校项目将一些javascript转换为PHP,但似乎我缺少了一些东西,因为完全相同的代码突然过早地退出了 for(var j=0; j<asciiArray.length;j++) { passwordFound[location] = String.fromCharCode(asciiArray[j]); console.log(passwordFound.join("")); if (password === passwordFound.joi

我必须为一个学校项目将一些javascript转换为PHP,但似乎我缺少了一些东西,因为完全相同的代码突然过早地退出了

for(var j=0; j<asciiArray.length;j++) {
    passwordFound[location] = String.fromCharCode(asciiArray[j]);

    console.log(passwordFound.join(""));

    if (password === passwordFound.join("")) {
        document.getElementById("password").innerHTML = 'Password: ' + passwordFound.join("");
        return true;
    }
    else if (location < 2) {
        var newlocation = location+1;

        if (characterDecryptFunction(newlocation,asciiArray,passwordFound,password)) return true;
    }

}
而PHP:

function decryptFunction() {
$password = $_POST["password"];
$asciiArray=array();
$passwordFound=array();

for($x=48;$x!=58;$x++) 
{
    array_push($asciiArray, $x);
}

for($x=97;$x!=123;$x++) 
{
    array_push($asciiArray, $x);
}

for($x=65;$x!=91;$x++) 
{
    array_push($asciiArray, $x);
}

for ($x=0;$x<count($asciiArray);$x++) 
{
    echo $asciiArray[$x];
}

echo $password . "<br>";

characterDecryptFunction(0, 2, $asciiArray, $passwordFound, $password); }
函数解密函数(){
$password=$_POST[“password”];
$asciiArray=数组();
$passwordFound=array();
对于($x=48;$x!=58;$x++)
{
阵列推送($asciiArray,$x);
}
对于($x=97;$x!=123;$x++)
{
阵列推送($asciiArray,$x);
}
对于($x=65;$x!=91;$x++)
{
阵列推送($asciiArray,$x);
}

对于($x=0;$x来说,不更新$index似乎很重要,就像不更新JavaScript中的位置一样。因此,更改PHP代码,引入$new_index:

当算法从递归调用返回时,即当它回溯到以前的字符时,它应该继续它停止的位置。对于该$index,它必须保留它以前的值


注意:注意,在PHP中,就像在JavaScript中一样,当您知道表达式是布尔表达式时,您不需要与
if
语句中的
true
进行比较。

不更新$index似乎很重要,就像不更新JavaScript中的位置一样。因此,更改PHP代码,引入$new\u index:

当算法从递归调用返回时,即当它回溯到以前的字符时,它应该继续它停止的位置。对于该$index,它必须保留它以前的值


注意:注意,在PHP中,就像在JavaScript中一样,当您知道表达式是布尔表达式时,您不需要与
if
语句中的
true
进行比较。

当您过早地说,您的意思是什么?另外,您会注意到PHP版本有一个额外的返回。我不知道这是否是错误,只是一个明显的差异。然而原始代码通过了所有选项,这一个突然停在01Z。这只是一个基本的破解算法,但它似乎不是从01x到02x。额外的返回也在原始代码中,但我忘了发布它。你说的
01x
02x
是什么意思?程序的功能是这样的:有一个填充了可能与大小写和数字相关的ascii代码。通过递归,我尝试猜测$password变量。So 000001 002 003等。原始javascript代码工作,但PHP代码突然停止在01Z,这是应该转到020的截止点。您可以编辑问题,添加代码,以便我们可以看到您是如何输入的吗oke函数。当你过早地说,你的意思是什么?另外,你会注意到PHP版本有一个额外的返回。我不知道这是否是错误,只是一个明显的差异。虽然原始代码遍历了所有选项,但这一个突然停在01Z。这只是一个基本的破解算法,但它似乎不是从01x到02x额外的返回也在原件中,但我忘了发布它。通过
01x
02x
你的意思是什么?好吧,程序的功能是这样的:有一个数组填充了可能与大小写和数字有关的ascii码。通过递归,我尝试猜测$password变量。So 000、001、002、003等。o最初的javascript代码可以工作,但PHP代码突然停止在01Z,这是应该转到020的截止点。您可以编辑问题,添加代码,以便我们可以看到如何调用函数。
function decryptFunction() {
var x,y,z,password,asciiArray=[],passwordFound=[];

password="abc";
asciiArray.push(0);
asciiArray.push(32);

for (x=48;x!=58;x++) {
    asciiArray.push(x);
}
for (y=97;y!=123;y++) {
    asciiArray.push(y);
}
for (z=65;z!=91;z++) {
    asciiArray.push(z);
}

characterDecryptFunction(0, asciiArray, passwordFound,password);}
function decryptFunction() {
$password = $_POST["password"];
$asciiArray=array();
$passwordFound=array();

for($x=48;$x!=58;$x++) 
{
    array_push($asciiArray, $x);
}

for($x=97;$x!=123;$x++) 
{
    array_push($asciiArray, $x);
}

for($x=65;$x!=91;$x++) 
{
    array_push($asciiArray, $x);
}

for ($x=0;$x<count($asciiArray);$x++) 
{
    echo $asciiArray[$x];
}

echo $password . "<br>";

characterDecryptFunction(0, 2, $asciiArray, $passwordFound, $password); }
    $new_index = $index+1;

    if (characterDecryptFunction($new_index,$maxIndex, $asciiArray, $passwordFound, $password)) return true;