抱歉,我找不到更好的主题。
我有一个购物车页面,我正在换两件事......我要向你展示的代码有效,但我想将它们合并。
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
如果用户已经登录,则表单不应显示,因为要求某人登录两次是没有意义的。
答案 0 :(得分:3)
这应该可以解决问题:
if (!(!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) && $_SESSION['User']['AccessLvl'] == null) {
echo ' <form name="login" action="login.php"></form>';
} else {
...
}
以下只是if条件的解释。这是 NO 有效语法:
如果卡不是空的&gt; !(!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1)
并且用户未登录&gt; $_SESSION['User']['AccessLvl'] == null
它会显示表单。
答案 1 :(得分:2)
第一个条件:
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 :(得分:1)
好的,所以从本质上来说,你想要检查两件事情,就是我们有两个变量:
变量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在他的回答中所说的那样