验证PHP中的数组值

时间:2013-07-23 16:53:56

标签: php

我有这个(注意文本框是一个数组)

echo "<td><input style='width:60px' type='text' name='allocas[]' id='vtext' class='sc_two' size='80' maxlength='5'></td>

然后在验证码中我有以下内容;

if(isset($_POST['Save']))
{
    if($_POST['allocas']=='')
    {
    echo "<table border='1'><tr><td>mikies</td></tr></table>";
    echo "Empty field";} 
    else 
    {
    echo "<table border='1'><tr><td>mikies</td></tr></table>";
    echo "Saved!";}
}

我的问题是($_POST['allocas']==''似乎没有完成工作,因为它没有验证,无论我是否在allocas中有值,它都会转到'else'验证和打印Saved!

如果我将文本框从数组更改为独立文本,方法是将名称更改为name='allocas'而不是name='allocas[]',那么它就可以正常工作。所以问题是我对数组值的验证不正确并且很难找到替代方法。你能帮忙吗?

注意:所有这些都不是硬编码和动态填充的。 (住在echo标签内)

由于

6 个答案:

答案 0 :(得分:0)

更改

name='allocas[]' 

name='allocas' 

在您的表单/输入中。

答案 1 :(得分:0)

如果输入字段是“数组”,则不能像字符串那样检查它。

if(isset($_POST['Save']))
{
    if(count($_POST['allocas']) == 0)
    {
        echo "<table border='1'><tr><td>mikies</td></tr></table>";
        echo "Empty field";
    } else 
    {
        echo "<table border='1'><tr><td>mikies</td></tr></table>";
        echo "Saved!";
    }
}

答案 2 :(得分:0)

如果您想尝试值是否为空,请尝试使用

if (empty($_POST['allocas']))

答案 3 :(得分:0)

要检查PHP中是否存在某个值,可以使用empty函数。我还建议检查该值是否确实是一个数组(你永远不知道人们将对你的表单做什么)

if(isset($_POST['allocas']) && is_array($_POST['allocas']) && !empty($_POST['allocas'])) {
    //Yay! Something is here
}

参考

is_array

empty

答案 4 :(得分:0)

您应该迭代每个POST值并验证每个值:

// Sanity check
if(is_array($_POST['allocas'])) {
  foreach($_POST['allocas'] as $oneTextFieldsValue) {
    // Validate $oneTextFieldsValue...
  }
}

答案 5 :(得分:0)

使用allocas[]作为字段名称会强制PHP将其视为可能的多值字段,并且它将创建一个数组。无论该名称有多少实际字段,都将创建此数组。

当你这样做时

$_POST['allocas'] == ''

您实际上是在将ARRAY与字符串进行比较。由于这种比较没有意义,PHP会将数组类型转换为原始字符串Array(字面意思是字母Arr等...) ,评估为假。

您需要计算数组中有多少个值,然后检查这些单独的值是否为“空虚”,例如

if (count($_POST['allocas']) > 0) {
   ... got some values
   foreach($_POST['allocas'] as $value) {
      ... test $value
   }
}