使用html表单复选框从PHP显示数组

时间:2018-12-12 22:53:47

标签: php html forms web-services post

我有一个复选框,如下所示:

<form method="POST" action="display.php">
    <input type="checkbox" value="1" name="options[]"> 
    <span class="checkboxText"> Fruits</span>
    <input type="checkbox" value="2" name="options[]"> 
    <span class="checkboxText">Vegetables </span><br><br>
    <button class="button" type="submit" value="display">DISPLAY</button>
</form>

我使用options[]得到$_POST['options']并将数据数组保存在变量中。如果要选中“水果”复选框,我想显示一个水果数组;如果选中了“蔬菜”复选框,我想显示一个蔬菜数组;如果同时选中了两个蔬菜,则想同时显示两个水果,并显示一条消息:“水果和蔬菜很健康”。这是我到目前为止拥有的php代码,但似乎无法按我希望的那样工作。

<?php
    $values = $_POST['options'];
    $n = count($values);
    for($i=0; $i < $n; $i++ )
    {
        if($values[$i] === "1"  && $values[$i] == "2")
        {
            //iteration to display both tables
            echo 'Fruits and Vegetables are healthy';
        }           
        else if($values[$i] === "1")
        {
            //display fruits
        }
        else if( $values[$i] == "2")
        {
            //display vegetables        
        }       
    }
?>

我的php代码存在的问题是,即使有,也不会进入第一个。它仅显示其他两个if中的两个表(因为也不显示回显)。有什么办法可以解决这个问题?

1 个答案:

答案 0 :(得分:1)

您不需要为此循环。您只需要为每个有问题的值签入$_POST['options']。我建议您使用要显示的文本作为复选框的值,这样就不必从数字转换为单词。

<input type="checkbox" value="Fruits" name="options[]">
<span class="checkboxText"> Fruits</span>
<input type="checkbox" value="Vegetables" name="options[]">
<span class="checkboxText">Vegetables </span><br><br>

然后在显示时,仅根据$_POST['options']中是否存在这些值来输出水果/蔬菜数组。

if (!empty($_POST['options'])) {

    echo implode(' and ', $_POST['options']) . " are healthy";

    if (in_array('Fruits', $_POST['options'])) {
        // show the fruits
    }

    if (in_array('Vegetables', $_POST['options'])) {
        // show the veg
    }
}