这两个php函数会产生相同的结果吗



我目前正在学习一门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;
}
}

假设$_SESSION['user_id']是一个典型的数字ID,并且不等于0,那么是。唯一不同的情况是$_SESSION['user_id']实际上是false0''(空字符串(。

不,它们不一样,你可以测试这个

<?php
$falseVar = false;
var_dump(isset($falseVar));

这将输出true,因为设置了一个包含false的变量

因此,如果你的$_SESSION['user_id']isset测试,无论$_SESSION['user_id']是真还是假,它都会返回真

我认为你需要使用!empty()而不是isset()

这取决于$_SESSION['user_id']是什么。

isset用于确定一个值不是null。这意味着当$_SESSION['user_id']为null时,isset将返回false。

但是'$_SESSION['user_id']==true'的工作更为复杂。

如果运算符、函数或控制结构需要布尔参数,则会自动转换值。

因此,'$_SESSION['user_id']==true'是true还是false取决于$_SESSION['user_I']将被转换为什么。

当转换为布尔值时,以下值被视为FALSE:

  • 布尔值FALSE本身
  • 整数0(零(
  • 浮点0.0(零(
  • 空字符串和字符串"0">
  • 零元素数组
  • 特殊类型NULL(包括未设置的变量(
  • 从空标记创建的SimpleXML对象

PHP布尔型

相关内容

  • 没有找到相关文章

最新更新