抱歉,我找不到更好的主题。
我有一个购物车页面,我正在更改两件事......我将向您展示的代码有效,但我想将它们组合在一起。
if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1)
上面的代码检查购物车是否为空
if ($_SESSION['User']['AccessLvl'] == null) { *this code check if the user is logged in or not.*
我的问题我有一个form
,我想仅在购物车不空时才在页面上显示此表单。 If
购物车是空的,则表单不应显示。此外,如果用户已登录,则会显示表单shouldn't
。
echo ' <form name="login" action="login.php">
</form>';
我累了这个
if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) {
} else {
if ($_SESSION['User']['AccessLvl'] == null) {
echo ' <form name="login" action="login.php">
</form>';
} else {
}
}
总结 SHOULD ONLY, if user is NOT logged in
表单应仅当它们是购物车中的某些东西(项目(时显示,and
如果用户NOT
记录它。
SHOULD NOT
如果用户已经登录,则不应显示表单,因为他们没有必要要求某人登录两次。
有人可以帮我吗?谢谢
这应该可以解决问题:
if (!(!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) && $_SESSION['User']['AccessLvl'] == null) {
echo ' <form name="login" action="login.php"></form>';
} else {
...
}
下面只是对 if 条件的解释。这不是有效的语法:
如果卡不是空的> !(!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1)
并且用户未登录> $_SESSION['User']['AccessLvl'] == null
则会显示表单。
第一个条件:
if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1)
可以简单地缩短为:
if (!empty($_SESSION['cart_array']))
因为count()
数组为空时仅返回小于 1 的值。此外,empty()
在内部的行为也像isset()
。
然后,您可以简单地添加其他条件,如下所示:
if (!empty($_SESSION['cart_array']) && !isset($_SESSION['User']['AccessLvl'])) {
// show form
}
如果isset()
不存在,则在尝试访问$_SESSION['User']['AccessLvl']
时不会引发通知。
更新
为了使整个事情更容易维护,您可以引入一些辅助函数,例如:
function isCartEmpty()
{
return empty($_SESSION['cart_array']);
}
function isLoggedIn()
{
return isset($_SESSION['User']['AccessLvl']);
}
if (!isCartEmpty() && !isLoggedIn()) {
// show form
}
所以本质上你想检查你的条件,那就是我们有两个变量:
变速档 1:购物车是空的
变速档 2:用户已登录
因此,当有人访问您的页面时,我们有 4 种可能发生的事件:
购物车为空,用户已登录
购物车为空,用户未登录
购物车不为空,用户已登录
购物车不为空,用户未登录
现在,这是您关于您希望表单显示的条件的最后一条评论:
"表单不应显示用户是否已登录以及登录的用户购物车是否为空">
因此,在第一部分中,您不希望在用户登录时使用表单,这意味着上面的选项 1 和 3 不应显示表单(我们只剩下 2 和 4(,然后您说您不想要购物车时表单是空的,这意味着选项 2 是不行的,我们只剩下选项 4, 这时,您确实希望表单显示:
在以下情况下,您需要表单:购物车不为空且用户未登录
翻译成代码:
购物车不为空:
!(!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1)
用户未登录:
$_SESSION['User']['AccessLvl'] == null
与 AND 结合,您将获得
if (!(!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) && $_SESSION['User']['AccessLvl'] == null) {
echo ' <form name="login" action="login.php"></form>';
} else {
...
}
正如@TobiasKun在他的回答中发布的那样