PHP-If语句的计算结果是否始终为true?
所以我无法理解这个if语句 我想做的是让这个人从$\u会话[“user\u name”]登录,如果它与两个可能的“admin”用户中的一个匹配,则提供额外的功能。但这总是千真万确的 例如,我将有三个用户:Emma、John和Robert。艾玛和约翰应该被允许额外的“管理功能”,但罗伯特是不允许的。所以 我的声明是:PHP-If语句的计算结果是否始终为true?,php,if-statement,Php,If Statement,所以我无法理解这个if语句 我想做的是让这个人从$\u会话[“user\u name”]登录,如果它与两个可能的“admin”用户中的一个匹配,则提供额外的功能。但这总是千真万确的 例如,我将有三个用户:Emma、John和Robert。艾玛和约翰应该被允许额外的“管理功能”,但罗伯特是不允许的。所以 我的声明是: if ($_SESSION["user_name"] === "emma" or "john"){ //give extra functionality as well as bas
if ($_SESSION["user_name"] === "emma" or "john"){
//give extra functionality as well as basic functionality
} else {
//give just basic functionality
但是这总是正确的,所以当我用用户名Robert作为我的测试帐户登录时,他也得到了额外的功能
我尝试过将$\u SESSION
的引号“
改为撇号”
,还尝试过将运算符从==
改为=
。我甚至尝试过=
,但发现这很难将我的$\u SESSION
变量设置为“emma”
我为什么做错了,因为我似乎无法控制它
值得注意的是,此
If
语句包含在父If
语句中,该语句使用冒号:
和endif
而不是方括号{}
。如果返回的列为空或其中包含用户名,则父级if
语句纯粹用于决定输出什么功能。您需要重新声明完整条件:
if ($_SESSION["user_name"] === "emma" or $_SESSION["user_name"] === "john"){
//give extra functionality as well as basic functionality
} else {
...
}
更新并解释:
if语句的伪代码语法为:
if ([some condition] [and/or] [another condition]) {
// then do some stuff
}
这些[condition]语句中的每一个都被评估为其中之一。因此,您的原始问题可以重新编写如下内容:
if ([$_SESSION["user_name"] is equal to "emma"] or ["john" is not false, 0, or null]) {
// we will always get in here
}
由于“john”将始终是“truthy”(它不是false,null,0),因此它将始终通过条件。您需要重新声明完整条件:
if ($_SESSION["user_name"] === "emma" or $_SESSION["user_name"] === "john"){
//give extra functionality as well as basic functionality
} else {
...
}
更新并解释:
if语句的伪代码语法为:
if ([some condition] [and/or] [another condition]) {
// then do some stuff
}
这些[condition]语句中的每一个都被评估为其中之一。因此,您的原始问题可以重新编写如下内容:
if ([$_SESSION["user_name"] is equal to "emma"] or ["john" is not false, 0, or null]) {
// we will always get in here
}
因为“john”总是“truthy”(它不是false,null,0),所以它总是通过条件。术语“john”
作为一个表达式是true
:
if ( "john" )
将计算为true,并且不会抛出任何语法错误
你想要的是:
if ($_SESSION["user_name"] === "emma" || $_SESSION["user_name"] === "john") {
术语“john”
作为一个表达式是true
:
if ( "john" )
将计算为true,并且不会抛出任何语法错误
你想要的是:
if ($_SESSION["user_name"] === "emma" || $_SESSION["user_name"] === "john") {
这可能有助于将其分解为多个步骤。PHP将计算或左边的所有内容,以查看其是否正确。然后将计算或右边的内容 结果是,
“john”
的计算结果为true
您正在寻找:
if ($_SESSION["user_name"] === "emma" or $_SESSION["user_name"] === "john") {
这可能有助于将其分解为多个步骤。PHP将计算或左边的所有内容,以查看其是否正确。然后将计算或右边的内容 结果是,
“john”
的计算结果为true
您正在寻找:
if ($_SESSION["user_name"] === "emma" or $_SESSION["user_name"] === "john") {
试试这样的
if (($_SESSION["user_name"] === "emma") || ($_SESSION["user_name"] === "john"))
{
//do something
}
else
{
//other thing
}
试试这样的
if (($_SESSION["user_name"] === "emma") || ($_SESSION["user_name"] === "john"))
{
//do something
}
else
{
//other thing
}
我建议您使用
| |
而不是或
。它们并不完全相同。请使用| |运算符,并应与双方进行比较($|会话[“user|u name”]===“emma”|$|会话[“user|u name”]===“john”)我建议您使用| |
而不是或
。它们并不完全相同。请使用| |运算符,并应与双方进行比较($|会话[“user|u name”]===“emma”|$|会话[“user|u name”]===“john”)这是第一个,所以这将被投票作为答案,因为我看到了这个答案,然后在尝试jpschroeder的建议并发现它有效的时候,其他答案出现了。它看起来很基本,但我真的不知道。所以“john”本质上是“true”,所以服务器读取的是if($\u SESSION[“user\u name]=“emma”或true){
非常感谢!或者您可能想使用if(在数组中($\u会话['user\u name'],数组('emma','john'))
这是第一个,所以这将被投票作为答案,因为我看到了这个答案,然后在尝试jpschroeder的建议并发现它有效的时候,其他答案出现了。它看起来很基本,但我确实不知道。所以“john”基本上是“true”,所以服务器读取的是if($\u SESSION[“user\u name]=“emma”或true){
非常感谢!或者您可能想使用if(在数组中($\u会话['user\u name'],数组('emma','john'))
感谢您为我解释这一点,我不知道您必须重新声明每种可能性的完整条件。我将投票给您的答案+1,因为jpschroeder几乎用正确的答案击败了您,但我非常感谢!谢谢您Axel Amthor。感谢您为我解释这一点,我不知道您必须重新声明e每种可能性的完整条件。我将投票给你的答案+1,因为施罗德几乎用正确的答案击败了你,但我非常感谢!谢谢你阿克塞尔·阿姆索尔。