在PHP中验证数组值
我有这个(注意文本框是一个数组)在PHP中验证数组值,php,Php,我有这个(注意文本框是一个数组) echo” 然后在验证代码中,我有以下内容: if(isset($_POST['Save'])) { if($_POST['allocas']=='') { echo "<table border='1'><tr><td>mikies</td></tr></table>"; echo "Empty field";} else {
echo”
然后在验证代码中,我有以下内容:
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!";}
}
if(设置($\u POST['Save']))
{
如果($_POST['allocas']='')
{
回声“麦克”;
回显“空字段”;}
其他的
{
回声“麦克”;
回显“已保存!”;}
}
我的问题是($\u POST['allocas']=='
似乎没有做这项工作,因为它没有验证,无论我在allocas
中是否有值,它都会转到'else'验证并打印保存!
如果我通过将名称改为name='allocas'
而不是name='allocas[]'
将文本框从数组更改为独立文本,那么它就可以工作了。因此,问题是我对数组值的验证不正确,正在努力寻找替代方法。您能提供帮助吗
注意:所有这些都不是硬编码和动态填充的。(在echo
标记内直播)
谢谢你的改变
name='allocas[]'
到
在您的表单/输入中。如果您的输入字段是一个“数组”,则以后不能像检查字符串一样检查它
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!";
}
}
if(设置($\u POST['Save']))
{
如果(计数($_POST['allocas'])==0)
{
回声“麦克”;
回声“空场”;
}否则
{
回声“麦克”;
回声“救了!”;
}
}
如果要尝试该值是否为空,请尝试以下操作
if (empty($_POST['allocas']))
要检查PHP中是否有某个值,可以使用
empty
函数。我还建议检查该值是否确实是一个数组(你永远不知道人们会对表单做什么)
参考资料
您应该迭代每个POST值并验证每个值:
// Sanity check
if(is_array($_POST['allocas'])) {
foreach($_POST['allocas'] as $oneTextFieldsValue) {
// Validate $oneTextFieldsValue...
}
}
使用
allocas[]
作为字段名迫使PHP将其视为一个潜在的多值字段,它将创建一个数组。无论有多少实际字段使用该名称,都将创建该数组
当你这样做的时候
$_POST['allocas'] == ''
实际上,您正在将数组与字符串进行比较。由于这种比较毫无意义,PHP会将数组类型转换为原始字符串ARRAY
(字面上的字母a
,r
,r
,等等),其结果为false
您需要计算数组中有多少个值,然后检查这些值是否为“空”,例如
出于好奇:为什么要将文本字段设置为数组?我从来没有这样做过,可能是因为它有它的用途,了解这一点会很好。假设我可以从一个下拉列表中选择一个值,该下拉列表包含数据库中的一系列数字,在选择后,你必须在Uitehanks中打印xxx个文本框,但我仍然看不到h现在,从下拉列表中选择一个值(可能是一个
)转换为将文本框转换为数组。我的意思是,只有一个好的旧循环可以做到这一点。无论如何,如果你写过关于这个的文章(advantanges/disadvantanges)请考虑更新这个问题。我的故事实际上是一个更复杂的故事。但是我明白你的意思。但是对我来说,这个选择不起作用。我试过了。
if(isset($_POST['allocas']) && is_array($_POST['allocas']) && !empty($_POST['allocas'])) {
//Yay! Something is here
}
// Sanity check
if(is_array($_POST['allocas'])) {
foreach($_POST['allocas'] as $oneTextFieldsValue) {
// Validate $oneTextFieldsValue...
}
}
$_POST['allocas'] == ''
if (count($_POST['allocas']) > 0) {
... got some values
foreach($_POST['allocas'] as $value) {
... test $value
}
}