检查POST数组是否为空

时间:2014-12-12 11:38:36

标签: php arrays post conditional

我正在检查$ _POST数组,但我找不到检查数组是否为空的方法。有谁知道我怎么检查这个。我尝试了!empty()isset(),但两种方式都返回true。

我的HTML表单带有选择框,文本字段和提交按钮:

<form method="post">
    <select name="product_name[]">
      <option value="Camera">Camera</option>
      <option value="Radio">Radio</option>
      <option value="Television">Television</option>
    </select>
    <input name="product_price[]" />

    <input type="submit" name="submit">
</form> 

我的PHP:

if( ! empty( $_POST['product_name'] ) && ! empty( $_POST['product_price'] ) ) {

    print_r( $_POST['product_name'] );
    print_r( $_POST['product_price'] );
}

返回:

Array ( [0] => Camera ) 
Array ( [0] => )

4 个答案:

答案 0 :(得分:2)

它是一个数组,因此您需要使用array_filter来删除空字符串。

if(!empty($_POST['product_name']) && array_filter($_POST['product_price'])){    
    print_r( $_POST['product_name']);
    print_r( $_POST['product_price']);
}

<强> Check here.

答案 1 :(得分:1)

也许您应该将默认的第一个选项添加为空字符串?并且不要将输入命名为product_name[]。将其更改为product_name

<form method="post">
    <select name="product_name">
        <option value="">-</option>
        <option value="Camera">Camera</option>
        <option value="Radio">Radio</option>
        <option value="Television">Television</option>
    </select>
    <input name="product_price" type="text" />

    <input type="submit" name="submit">
</form>

如果选择第一个选项,empty()函数应返回TRUE

答案 2 :(得分:0)

您已声明product_name [](因此,如果选择了选项1,则数组为空将返回TRUE)您必须将其更改为product_name

<form method="post">
    <select name="product_name">
      <option value="">-</option>
      <option value="Camera">Camera</option>
      <option value="Radio">Radio</option>
      <option value="Television">Television</option>
    </select>
    <input name="product_price" />

    <input type="submit" name="submit">
</form> 

答案 3 :(得分:-2)

好的,我找到了解决方案。以前的回答是错误的希望这会对你有所帮助:

<form method="post">
    <select name="product_name[]">
      <option value="Camera">Camera</option>
      <option value="Radio">Radio</option>
      <option value="Television">Television</option>
    </select>
    <input name="product_price[]" />

    <input type="submit" name="submit">
</form> 

<?php

if( !empty( $_POST['product_name'] ) && !count( array_filter($_POST['product_price'])) ==0 ) {

    print_r( $_POST['product_name'] );
    print_r( $_POST['product_price'] );
}
?>