0

在php中勾选两个复选框时如何调用方法?

if (isset($_POST['check1'])) 
{data1();}

else if (isset($_POST['check2']) 
{data2();}

以上适用于单个复选框。当我勾选两者时,它只会显示 data1()。我尝试了以下。

else if(isset($_POST['check1']) && ($_POST['check2'])) 
{data1and2();}

else if(isset($_POST['check1']) && ($_POST['check2']))
{data1and2();}   
4

3 回答 3

2

你错过isset$_POST['check2']

 if(isset($_POST['check1']) && isset($_POST['check2'])) {
    data1and2();
 }

而这个条件应该是第一位的。

 if(isset($_POST['check1']) && isset($_POST['check2'])) {
    data1and2();
 } else if (isset($_POST['check1'])) {
    data1();
 } else if (isset($_POST['check2'])) {
    data2();
 }
于 2012-09-27T03:13:49.257 回答
1

为什么不分开 if 语句?

if(isset($_POST['check1']))
    data1();

if(isset($_POST['check2']))
    data2();

如果您在检查它们时需要不同的功能,您可以执行类似的操作。

list($flag1, $flag2) = array(isset($_POST['check1']), isset($_POST['check2']));

if($flag1 && flag2)
    data1and2();
else if($flag1)
    data1();
else if($flag2)
    data2();
于 2012-09-27T03:13:56.903 回答
0

我相信你的逻辑是错误的。在单打的情况下,这个逻辑很好,但如果你同时检查,issetoncheck1将被触发,脚本不知道它应该检查如果两者都被检查它应该采取不同的动作。最好的办法是先检查if两个被检查的对象,然后检查单个框,如下所示:

if (isset($_POST['check2'] && isset($_POST['check1']))
{data1and2();}

else if (isset($_POST['check1'])) 
{data1();}

else if (isset($_POST['check2']) 
{data2();}
于 2012-09-27T03:17:54.653 回答