我目前正在学习PHP课程,并且对这两个函数是否产生相同的结果感到好奇,一个函数比另一个函数效率更高吗?如果是这样,请解释,谢谢。
public function is_logged_in(){
if ($_SESSION['user_id'] == true){
return true;
}else{
return false;
}
}
public function is_logged_in(){
if (isset($_SESSION['user_id'])){
return true;
}else{
return false;
}
}
答案 0 :(得分:0)
假设$_SESSION['user_id']
是典型的数字ID,并且不等于0,则为是。唯一不同的情况是$_SESSION['user_id']
实际上是false
,0
或''
(空字符串)时。
答案 1 :(得分:0)
不,它们不相同,您可以对此进行测试
<?php
$falseVar = false;
var_dump(isset($falseVar));
这将输出 true ,因为变量包含错误的已设置。
因此,如果您的$_SESSION['user_id']
用isset
进行了测试,则无论$_SESSION['user_id']
是对还是假,它都会返回true
我认为您需要使用!empty()
而不是isset()
答案 2 :(得分:0)
这取决于$ _SESSION ['user_id']是什么。
isset用于确定值不为null。这意味着当$ _SESSION ['user_id']为null时,isset将返回false。
但是'$ _SESSION ['user_id'] == true'的工作更为复杂。
如果运算符,函数或控件结构需要布尔参数,则值将自动转换。
因此,'$ _ SESSION ['user_id'] == true'是true还是false取决于$ _SESSION ['user_id']将被转换为什么。
转换为布尔值时,以下值为FALSE: