带有空和isset的PHP POST数组

带有空和isset的PHP POST数组,php,Php,我有以下多个复选框选择: <input type="checkbox" name="fruit_list[]" value="apple">Apple <input type="checkbox" name="fruit_list[]" value="banana">Banana <input type="checkbox" name="fruit_list[]" value="mango">Mango <input type="checkbox" na

我有以下多个复选框选择:

<input type="checkbox" name="fruit_list[]" value="apple">Apple
<input type="checkbox" name="fruit_list[]" value="banana">Banana
<input type="checkbox" name="fruit_list[]" value="mango">Mango
<input type="checkbox" name="fruit_list[]" value="orange">Orange
我的问题(以上代码有效!但我不清楚):

  • 如果我没有选择任何复选框然后提交表单,
    $\u POST
    数组是否包含名为
    $\u POST['fruit\u list']
    的索引

  • 假设您的答案是“否”,那么如何才能对不存在的数组元素使用
    empty()
    ?不存在的数组元素表示
    NULL

  • 使用
    有什么区别!isset($\u POST['fruit\u list'])
    而不是
    empty()

  • 我通常理解
    empty()
    isset()
    之间的区别

    你能在这个例子的上下文中解释一下吗?

    使用print\u r()打印post数据

    <?php 
    echo "<pre>"; print_r($_POST);
    if (empty($_POST['fruit_list']) ){
        echo "You must select at least one fruit.<br>"; 
    }
    else{
        foreach ( $_POST['fruit_list'] as $frname ){
            echo "Favourite fruit: $frname<br>";
        }
    }
    ?>
    
    
    
    如果不选中任何复选框,则将不会获得$\u POST['fruit\u list'],数组中不存在数组索引
    fruit\u list

    查看
    isset()
    empty()

  • 如果我没有选择任何复选框然后提交表单,$\u POST数组是否包含名为
    $\u POST['fruit\u list']
  • 否,关键水果列表不存在

    要检查数组中是否存在键,最好使用
    array\u key\u exists
    ,因为如果有空值
    isset
    将返回false

    但对你来说,isset是个好办法

    isset
    -确定变量是否已设置且不为空(有任何值)

    empty
    -确定变量是否为空(0,null',false,array()),但您无法理解变量或键是否存在

    例如:

    答复:

    1.
    $\u POST
    数组不包含
    $\u POST['fruit\u list']

    2.第一个答案是“No”。如果变量不存在或其值等于FALSE,则认为该变量为空
    empty()
    如果变量不存在,则不会生成警告。
    3Empty检查变量是否已设置,如果已设置,则检查变量是否为null、“、0等。
    Isset只检查是否已设置,它可以是非空的任何内容

    你可以自己做一个小实验来发现这一点。我是初学者。我试过alreadyOk,但至少自己回答第一个问题。根据@Manjeet Barnala的回答,我非常理解第一个问题的答案。我打印了POST数组。谢谢
    <?php 
    echo "<pre>"; print_r($_POST);
    if (empty($_POST['fruit_list']) ){
        echo "You must select at least one fruit.<br>"; 
    }
    else{
        foreach ( $_POST['fruit_list'] as $frname ){
            echo "Favourite fruit: $frname<br>";
        }
    }
    ?>
    
    $_POST['test'] = 0;
    print 'isset check: ';
    var_dump(isset($_POST['test']));
    print 'empty check: ';
    var_dump(empty($_POST['test']));
    
    $_POST['test'] = null;
    
    print 'isset NULL check: ';
    var_dump(isset($_POST['test']));
    
    print 'key exists NULL check: ';
    var_dump(array_key_exists('test', $_POST));
    
    isset check: bool(true)
    empty check: bool(true)
    isset NULL check: bool(false)
    key exists NULL check: bool(true)