Php 以数组形式从HTML表单获取输入,并检查数组中是否有输入

Php 以数组形式从HTML表单获取输入,并检查数组中是否有输入,php,forms,Php,Forms,我将HTML表单中的值作为数组输入,如下所示: <form method = "post" action = "akf.php"> Enter Values in Array $a:<br><br> <input type="text" name="a[one]" /> <input type="text" name="a[two]" /> <input type="text" name="a[t

我将HTML表单中的值作为数组输入,如下所示:

 <form method = "post" action = "akf.php">
    Enter Values in Array $a:<br><br>
    <input type="text" name="a[one]" />
    <input type="text" name="a[two]" />
    <input type="text" name="a[three]" />
    <input type="text" name="a[four]" />
    <input type="text" name="a[five]" />
    <br><br><input type="submit" value="Find"><br><br>
 </form>
   $a=$_POST['a'];
   print_r($a);
现在,如果我提交表单,则不在表单中提供任何输入(即空表单)

它应该返回消息“数组中没有输入值”

注意:我希望PHP仅在我提交表单后返回上述消息

我用于实现输出的函数和语法:

if (empty($a))
{
    echo 'No Values entered in the Array';
}
else
{
    echo 'Array';
}
这不起作用,因为:当新加载页面时,我只返回消息“数组中没有输入值”,当我单击submit按钮时,PHP获取一些值作为输入并返回消息数组

$sum = array_sum($a);
if($sum==0)
{
    echo " No Values entered in the Array ";
}
else
{
    echo 'Array';
}
只有当所有输入都是数字(任何类型的数字)时,此语法才起作用。如果我通过html表单在数组中输入字符串并提交,它仍然会打印“数组中没有输入值”
因为
数组的总和($a)不计算字符串。

它返回数组,因为即使不输入任何内容,也会提交空字符串。因此,如果不输入任何内容,数组中将充满空字符串

要检查是否只有空字符串,请执行以下操作:

if(!array_filter($a)) {
    echo 'No Values entered in the Array';
}
else {
    echo 'Array';
}
将所有元素与false进行比较,如果它们为false,则将删除它们。因此,如果数组中的所有元素都是空字符串,则返回的数组将为空,因此验证为false

另请参见:

您的表单是:
在数组$a中输入值:





不需要添加任何密钥。 php部分: $values=数组过滤器($a); 如果(!空($values)){ 回声“没有价值”; }否则{ 回波“阵列”; }
在您的情况下,您可以尝试以下方法:

$somethinginarray = false;    

foreach($a as $value) {
    if(!empty($value)) { // trim this one or put more efficient validation
       $somethinginarray = true;
    }
}

if($somethinginarray) echo 'Array';
else echo " No Values entered in the Array ";

谢谢你的帮助。我很高兴我能帮助你。@如果我或任何回答都解决了你的问题,请点击检查标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。如果你知道$var&1有什么作用,请分享。无法理解函数test_odd($var){return($var&1)}@sgeems请看:我遇到了通过mysqli_real_escape_字符串函数传递这些输入类型文本的问题。假设我是这样用的<代码>$a=mysqli\u real\u escape\u字符串($con,$\u POST['a'])
它给出错误并说
第二个参数应为数组
@SashIKSU,因为error说它看起来像
$\u POST['a']
不是数组。尝试
$\u POST
并检查它是否有效,您必须调试并查找
$\u POST['a']
是否作为数组发送?刚才我想出了一种方法。首先,我将
(我有10个文本输入)放入php数组。其次,我调用另一个for循环中的每个数组元素。在这第二个for循环中,我调用了
mysqli\u real\u escape\u string()
方法。现在没事了。。。因为我正在开发分类广告网站,我想知道它可以吗对于($k=0;$k)
$somethinginarray = false;    

foreach($a as $value) {
    if(!empty($value)) { // trim this one or put more efficient validation
       $somethinginarray = true;
    }
}

if($somethinginarray) echo 'Array';
else echo " No Values entered in the Array ";