2017-04-20 78 views
0

基本上人们有选择他们想要做什么样的活动。这是用复选框完成的。我的旧代码有点垃圾,所以我决定清理一下。所以,检查的POST变量被放入SESSION中,像这样;

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    for($x = 0; $x < $keuzelength; $x++) { 
    $_SESSION[$keuze[$x]] = $_POST[$keuze[$x]]; 
    } 
    } 

这工作就像一个魅力,但在此之后,我想检查他们是否都是空的。只有当它们全部为空时,该错误才需要弹出。目前这样做是这样的:

if (empty($_SESSION['Dierentuin']) && 
    empty($_SESSION['Bowlen']) && 
    empty($_SESSION['Attractiepark']) && 
    empty($_SESSION['Wandelen']) && 
    empty($_SESSION['Hardlopen']) && 
    empty($_SESSION['Uitgaan']) && 
    empty($_SESSION['Zwemmen']) && 
    empty($_SESSION['Karten']) && 
    empty($_SESSION['Lasergamen']) && 
    empty($_SESSION['Paintballen']) && 
    empty($_SESSION['Klimmen']) && 
    empty($_SESSION['Museum']) && 
    empty($_SESSION['Kanovaren']) && 
    empty($_SESSION['Weekend weg']) && 
    empty($_SESSION['Verras me']) && 
    empty($_SESSION['Poolen'])){ 

    print('error text'); 
       exit(); 
       } 

这基本上检查是否任何上述脚本停止并发送错误。奇迹般有效。但是,只要我添加一个新的选择数组用于复选框,我需要在那里添加另一个空行。

有没有办法检查所有$ _SESSION [$ keuze []]变量?

在此先感谢!

+0

只要在循环内部使用它将POST值分配给会话...在循环之前初始化一个标记'$ has_errors = false',并检查当前项是否为空 - 如果是这样,将标志设置为true。然后在循环之后,根据标志是真还是假来相应地采取行动。 – CBroe

+0

@ C0dekid:仍然,他必须在添加一个选项时添加一行:/ – OldPadawan

+0

将会话密钥放入单独的数组$ _SESSION ['test'] ['Dierentuin']'中并使用'array_filter($ _SESSION ['test'])'在该数组上 –

回答

-1

不起作用,因为我还在会话变量中存储其他内容。

正如@ImClarky建议,创建另一个阵列来存储所有要检查的值,即:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    for($x = 0; $x < $keuzelength; $x++) { 
    $_SESSION['custom_sessions'][$keuze[$x]] = $_POST[$keuze[$x]]; 
    } 
} 

然后你可以使用array_filter检查是$_SESSION['custom_sessions']是空的,即:

if (!array_filter($_SESSION['custom_sessions'])) 
{ 
    print('error text'); # empty array 
} 
+1

使用array_filter() –

+1

没有用,因为我还在会话变量中存储其他内容。 – MilkTea

+1

@MilkTea - 也许如果你在循环中有类似'$ _SESSION ['keuze'] [$ keuze [$ x]]'的东西,你可以''array_filter($ _ SESSION ['keuze'])' – ImClarky