Php空数组检查

时间:2013-09-12 05:20:58

标签: php

我有一个以下的html表,其名称包含数组。如果它的值是空的,我如何检查这个数组?

echo "<input type='radio' name='ch[$roll][$sname][$class]' value='1' />&nbsp;";
echo "<input type='radio' name='ch[$id][$sname][$class]' value='0' />";

目前我用以下代码检查它,它不起作用,但我知道名称是数组,它必须与任何数组函数进行比较。你们能给我一个想法吗?

if(isset($_POST['ch']))
{
   $ch = $_POST['ch'];
   if(empty($ch))
    echo "<div class='error>Select attendence field. </div>";   
}

的问候。

更新:(完整代码)

$action = htmlspecialchars($_SERVER['PHP_SELF'])."?class=$class_from";  
echo "<form method='post' action='$action' name='attendence'/>";

echo "<table width='100%' cellpadding='0' cellspacing='0' border='0'>";
echo "<tr>";
echo "<td class='tdhead' valign='top' width='200'><b>Student Name</b></td>";    
echo "<td class='tdhead' valign='top' width='250'><b>Roll No</b>
</td>";             
echo "<td class='tdhead' valign='top' width='250'><b>Class Name</b>
</td>";             
echo "<td class='tdhead' valign='top' width='200'><b>Present / Not present</b>
</td>";                 
echo "<td class='tdhead' valign='top' width='200'>
Present All <input type= 'checkbox' 
onclick='checkAll(this)'</td>";                 
echo "</tr>";

//start the counter variable
$counter = 1;
while($res2 = mysql_fetch_array($sql2))
{
$id = (int) $res2['id'];
$sname = inputvalid($res2['sname']);
$roll = inputvalid($res2['roll']);
$class = inputvalid($res2['class']);

echo "<tr>";
echo "<td class='tdhead2' valign='top'>$sname</td>";
echo "<td class='tdhead2' valign='top'>$roll</td>";
echo "<td class='tdhead2' valign='top'>$class</td>";
echo "<td class='tdhead2' valign='top'>";

//echo each radio with the counter for this row
echo "<input type='radio' name='ch[$roll][$sname][$class]' value='1' />&nbsp;";
echo "<input type='radio' name='ch[$id][$sname][$class]' value='0' />";

echo "</td>";
echo "<td class='tdhead2' valign='top'>&nbsp;</td>";
echo "</tr>";

//add one to the counter
$counter++;
}

echo "<tr>";                
echo "<td class='tdhead2'>&nbsp;</td>";
echo "<td class='tdhead2'>&nbsp;</td>";
echo "<td class='tdhead2'>&nbsp;</td>";             
echo "<td class='tdhead2'>&nbsp;</td>";
echo "<td class='tdhead2'><input type='submit' value='Record' name='Submit' 
class='submit' /></td>";                
echo "</tr>";               

echo "</table>";
echo "</form>";


if(isset($_POST['Submit']) && $_POST['Submit'] == "Record")
{
if(isset($_POST['ch']))
{

 $ch = array_filter($_POST['ch']);

if (empty($ch))
     {
     echo "<div class='error>Select attendence field. </div>";   
 }
  }

  if(count($ch) == 0)
  {
echo "<div class='error>Select attendence field. </div>";   
}   
else
{

foreach ($_POST['ch'] as $roll => $arr1)
{
    $roll;
    foreach ($arr1 as $name => $arr2)
    {
    $name;
    foreach ($arr2 as $class => $value)
    {
    $class;
    $value;

 $sql = mysql_query("INSERT INTO e_attendence VALUES('', '$name', '$roll', '$class', 
'$value', '$current_date')");
    }
}
  }
}

if($sql)                        
echo "<div class='success'>Succesfully recorded.   
</div>";                                    

}   

4 个答案:

答案 0 :(得分:0)

使用empty()代替isset()

检查以下链接中可用的比较表

http://php.net/manual/en/types.comparisons.php

答案 1 :(得分:0)

empty() method work for finding whether the array is empty or not.

但是对于您的解决方案,请使用以下内容: -

if(isset($_POST['ch']) && $_POST['ch']=='1')
{
   $ch = $_POST['ch'];
   if(empty($ch))
   echo "<div class='error>Select attendence field. </div>";   
}

如果您想在没有选择收音机时显示错误信息,请使用以下代码: -

if(!isset($_POST['ch']) && $_POST['ch']=='')
{
     echo "You have not selected any radio button";
}

答案 2 :(得分:0)

试试这个

if(isset($_POST['ch'])){

   $ch = array_filter($_POST['ch']);

   if (empty($ch)) {
     echo "<div class='error>Select attendence field. </div>";   
   }
}

答案 3 :(得分:0)

试试这个

print_r($_POST['ch']);