我有这个(注意文本框是一个数组)
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
标签内)
由于
答案 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
}
参考
答案 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
(字面意思是字母A
,r
,r
等...) ,评估为假。
您需要计算数组中有多少个值,然后检查这些单独的值是否为“空虚”,例如
if (count($_POST['allocas']) > 0) {
... got some values
foreach($_POST['allocas'] as $value) {
... test $value
}
}