我试图检查if和elseif如果$ _sessions存在且是否有固定值。
我唯一的问题是会议全部到位并设置为预期值,但我的脚本不会再进行第二次检查。
所以我的问题是在这里我格式化if,elseif,否则不正确或者是我检查会话值的方式吗?我应该以另一种方式做什么?
脚本可以在这里找到:http://pastebin.com/cpbCZJ0k
这是145行,所以我真的不会在这里发帖,因为它太长了会占用整个页面。
非常感谢任何帮助。
答案 0 :(得分:1)
第二个if isset($_SESSION['gedaanx']) && $_SESSION['gedaanx'] == 2 && isset($_SESSION['pre']) && $_SESSION['pre'] == 1
中的表达式也用于第三个,因此只有两种可能:脚本将执行第二个if
或者它只会跳到else
(因为该表达式返回false
,第三个if
也将失败。)
你必须反转第二和第三if
s。
答案 1 :(得分:1)
首先,您的代码
if (isset($_SESSION['gedaanx']) && $_SESSION['gedaanx'] == 1 ){
...
elseif (isset($_SESSION['gedaanx']) && $_SESSION['gedaanx'] == 2 &&
isset($_SESSION['pre']) && $_SESSION['pre'] == 1 ) {
...
elseif (isset($_SESSION['gedaanx']) && $_SESSION['gedaanx'] == 2 &&
isset($_SESSION['pre']) && $_SESSION['pre'] == 1 &&
isset($_SESSION['gedaan1']) && $_SESSION['gedaan1'] == 1 ) {
...
elseif (isset($_SESSION['gedaanx']) && $_SESSION['gedaanx'] == 2 &&
isset($_SESSION['pre']) && $_SESSION['pre'] == 1 &&
isset($_SESSION['gedaan1']) && $_SESSION['gedaan1'] == 1 &&
isset($_SESSION['gedaan2']) && $_SESSION['gedaan2'] == 1) {
...
现在,请注意第一个和第二个if子句是不兼容的,即如果第一个为真,则第二个永远不会为真,反之亦然。这是一个很好的例子,你的执行检查第一个子句是否为真,如果是,则遵循第一个分支。如果不成立,则检查第二个子句。如果确实如此,则遵循第二个分支。
请注意,如果第一个子句为true,则不检查第二个 。因此,对于第三和第四个分支的情况,如果第一个或第二个分支是真的,则不管其if
条款如何,都不会遵循其他分支。
但是,如果第三/第四分支的子句为真,则第二分支的子句也是如此。因此,执行永远不会到达第三或第四分支,总是在第二(或第一)分支中结束。
记住有关不兼容子句的注释,您可能希望使子句不兼容,例如,使第二个分支看起来像
elseif (isset($_SESSION['gedaanx']) && $_SESSION['gedaanx'] == 2 &&
isset($_SESSION['pre']) && $_SESSION['pre'] == 1 &&
!isset($_SESSION['gedaan1']) ) {
...
或者简单地交换第4分支和第2分支,使第4分为第2分,第3分为第3分,第2分为第4分。然后在第1分钟后立即检查第4分支。