检查字段数组是否为空?

时间:2011-11-05 09:37:53

标签: php arrays

我想如果值字段txtname为空回显It is ok但它在我的代码中不起作用(如果字段为空并点击按钮,则会看到print_r(...)的输出),请参阅我的演示和我的代码。我该怎么办?

演示: http://codepad.viper-7.com/FNWcIs

<form method="post">
    <input name="txtname[]">
    <button>Click Me</button>
</form>
<?php
    if ($_POST) {
        $txtname = $_POST['txtname'];
        if (!empty($txtname)) {
            echo '<pre>';
            print_r($txtname); // Output this is: Array ( [0] => )
        } else {
            echo 'it is ok';
        }
    } 
?>

3 个答案:

答案 0 :(得分:2)

将输入字段名称更改为txtname,如下所示。

<input name="txtname">

或者,如果您想使用文本框数组,请尝试以下代码。

<form method="post">
    <input name="txtname[]">
    <input name="txtname[]">
    <input name="txtname[]">
    <button>Click Me</button>
</form>
<?php
    if($_POST){
        $txtname       = $_POST['txtname'];

            foreach($txtname   as $key=>$value)
            {
                if(!empty($value)){
                    echo '<br>'.$value; // Output this is: Array ( [0] => )
                }else{
                    echo '<br>it is ok';
                }
            }
    }
?>

答案 1 :(得分:2)

$txtname或($_POST['txtname'])是一个包含一个元素的数组。即使该元素为空,empty()也会为任何包含一个或多个元素的数组返回TRUE

这应该解释你的代码的行为。

要实现您的目标,请更改HTML:

自:

<input name="txtname[]">

要:

<input name="txtname">

如果您不使用括号,它将是一个字符串。如果empty为空,FALSE将返回{{1}}。请参阅Variables From External Sources PHP Manual

答案 2 :(得分:1)

如果您不打算将一个值传递给变量$ txtname

,您可以尝试这种方式。

`

    $txtname       = $_POST['txtname'];
    if($txtname[0]){
        echo '<pre>';
                print_r($txtname); // Output this is: Array ( [0] => )
            }else{
                echo 'it is ok';
            }
}

&GT;`