这两个php函数是否产生相同的结果?
我目前正在学习一门PHP课程,我很好奇这两个函数是否产生相同的结果,一个比另一个更有效?如果是,请解释,谢谢这两个php函数是否产生相同的结果?,php,isset,Php,Isset,我目前正在学习一门PHP课程,我很好奇这两个函数是否产生相同的结果,一个比另一个更有效?如果是,请解释,谢谢 public function is_logged_in(){ if ($_SESSION['user_id'] == true){ return true; }else{ return false; } } public function is_logged_in(){ if (isset($_SESSION['us
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;
}
}
假设
$\u会话['user\u id']
是一个典型的数字id,不等于0,则为是。唯一不同的情况是$\u SESSION['user\u id']
字面上是false
,0
或'
(空字符串)。不,它们不一样,您可以测试一下
<?php
$falseVar = false;
var_dump(isset($falseVar));
这取决于$\u会话['user\u id']是什么
isset用于确定值不为空。这意味着当$\u会话['user\u id']为空时,isset将返回false
但是“$”会话['user\u id']==true”的工作更复杂
如果运算符、函数或控件结构需要布尔参数,则会自动转换值
因此,$\u会话['user\u id']==true'是真是假取决于$\u会话['user\u id']将转换为什么
转换为布尔值时,以下值被视为FALSE:
- 布尔值本身是假的
- 整数0(零)
- 浮动0.0(零)
- 空字符串和字符串“0”
- 零元素数组
- 特殊类型NULL(包括未设置的变量)
- 从空标记创建的SimpleXML对象
为什么$\u会话['user\u id']
是布尔值?这部分取决于错误报告级别。如果未设置用户id,第一个函数将抛出通知错误。$\u会话['user\u id']='';