Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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
Php 使用TRUE调用函数返回错误的内容_Php - Fatal编程技术网

Php 使用TRUE调用函数返回错误的内容

Php 使用TRUE调用函数返回错误的内容,php,Php,我有这个功能 //$hasher is a phpass object. public function getHash( $check ) { global $hasher; if ( $check == 'hash' ) { return $hasher->HashPassword($this->password); } else if ( $check == 'check' )

我有这个功能

//$hasher is a phpass object.    
public function getHash( $check )
    {
    global $hasher;
    if ( $check == 'hash' )
        {
        return $hasher->HashPassword($this->password);
        }
    else if ( $check == 'check' )
        {
        return $hasher->CheckPassword($this->password, $this->getData('data')['password']);
        }
    else
        {
        return 'F*** off';
        }
    }
当我叫它这是我得到的

$obj->getHash('hash')
//getHash(): $2a$08$Uof.EzLkJI..........

$obj->getHash('check')
//getHash(): 1

$obj->getHash('dsadaldas') //and anything else in the brackets
//getHash():F*** off

$obj->getHash(TRUE)
//getHash(): $2a$08$3vNYnGVsf...

为什么用
TRUE
调用方法返回的结果与我用
'hash'
作为参数调用的结果相同?我是不是遗漏了什么?我用
switch()
尝试了它,但它的行为仍然是一样的。

因为当您使用相等运算符(
=
)时,诸如
hash
之类的字符串的计算结果为
true
):

您可以使用相同的(
==
)替换:


这确保了变量的值和类型都是相同的。

这是因为当您将布尔值(
true
)与字符串(
“hash”
)进行比较时,字符串得到的是相同的值,而不是相反的值


解决方案:使用类型安全比较(
==

啊,是的,超级相同的运算符,我总是忘记它们:))这就成功了。谢谢你的解释,我希望我能坚持更长时间。干杯!
if ( $check === 'hash' )