Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS到PHP错误_Javascript_Php - Fatal编程技术网

Javascript JS到PHP错误

Javascript JS到PHP错误,javascript,php,Javascript,Php,我有一些JS代码,我想转换成PHP代码。我改变了所有我知道应该做的事情,但结果不一样 PHP代码我从JS代码创建: <?php function hashCode($str){ $hash = 0; if (strlen($str) == 0) return $hash; for ($i = 0; $i < strlen($str); $i++) { $char = $str[$i]; $hash = (($hash

我有一些JS代码,我想转换成PHP代码。我改变了所有我知道应该做的事情,但结果不一样

PHP代码我从JS代码创建:

<?php
function hashCode($str){
    $hash = 0;

    if (strlen($str) == 0) return $hash;

    for ($i = 0; $i < strlen($str); $i++) {
          $char = $str[$i];
          $hash = (($hash<<5) - $hash) + $char;
          $hash = $hash & $hash;
    }
    return $hash;
}
?>

输入字符串时 它返回0,这不是因为if函数。
原始代码:

hashCode = function(str){
    var hash = 0;
    if (str.length == 0) return hash;
    for (i = 0; i < str.length; i++) {
        char = str.charCodeAt(i);
        hash = ((hash<<5)-hash)+char;
        hash = hash & hash; // Convert to 32bit integer
    }
    return hash;
}
hashCode=函数(str){
var散列=0;
如果(str.length==0)返回哈希;
对于(i=0;ihash=((hash这是因为,在javascript中,char是字符的代码(
charCodeAt)
。因此这也会做同样的事情。使用
ord($char)


它不起作用,我试着用一个简单的词,比如“felien”,结果出现了JS:-1278196699和PHP:3016770597,所以它不能完全起作用。
function hashCode($str) {
    $hash = 0;
    if (strlen($str) == 0) {
        return $hash;
    }
    for ($i = 0; $i < strlen($str); $i++) {
        $char = $str[$i];
        $hash = (($hash << 5) - $hash) + ord($char);
        $hash = $hash & $hash;
    }
    return $hash;
}
65
2081
64578
2001986
2001986