PHP 与 JavaScript,按位运算符

PHP vs JavaScript, Bitwise Operators

我在JavaScript中有一个函数:

function myFunc(a, b, c)
{
  return (a ^ (b | (~c)));
}

等价于 PHP:

function myFunc($a, $b, $c)
{
    return ($a ^ ($b | (~$c)));
}

他们的结果不一样:

myFunc('123', '4434', '355'); // PHP = ��� (Unknown Characters)
myFunc('123', '4434', '355'); // JavaScript = -91

这里有什么问题?

在PHP中你需要手动转换为整数

function myFunc($a, $b, $c)
{
    return ((int)$a ^ ((int)$b | (~(int)$c)));
}