所以,我试图做一个民意调查,当我运行mysql给我这个错误,我不知道它意味着什么。
警告:max()[function.max]:数组必须在第18行的....中包含至少一个元素。
有人可以指导我这些吗?
这是我的代码:
$query = mysql_query("SELECT * FROM `poll` ORDER BY `id` ASC LIMIT 1");
$rows = mysql_num_rows($query);
if($rows > 0){
$poll = mysql_fetch_array($query);
$title = $poll['name'];
} else {
$title = 'No Poll Yet';
}
$query = mysql_query("SELECT COUNT(`id`) as hits FROM `responses` GROUP BY `qid`");
$me = array();
while($row = mysql_fetch_array($query)){
$me[] = $row['hits'];
}
$max = max($me); ////// THIS IS LINE 18
$query = mysql_query("SELECT `questions`.`pid` FROM `responses`, `questions` WHERE `responses`.`qid`=`questions`.`id` AND `responses`.`ip`='".$_SERVER['REMOTE_ADDR']."' AND pid='".$poll['id']."'");
在“//////”
之后注明第18行有任何帮助吗? :■
答案 0 :(得分:3)
简单地说错误信息是什么:$me
是一个空数组(由你的sql-query返回什么引起的 - 为什么发生这种情况很难说没有看到你的表结构和表的内容)
答案 1 :(得分:0)
只需更改行号18
if(!empty($me)) $max = max($me);
更改后的完整代码:
$query = mysql_query("SELECT * FROM `poll` ORDER BY `id` ASC LIMIT 1");
$rows = mysql_num_rows($query);
if($rows > 0){
$poll = mysql_fetch_array($query);
$title = $poll['name'];
} else {
$title = 'No Poll Yet';
}
$query = mysql_query("SELECT COUNT(`id`) as hits FROM `responses` GROUP BY `qid`");
$me = array();
while($row = mysql_fetch_array($query)){
$me[] = $row['hits'];
}
if(!empty($me)) $max = max($me); ////// THIS IS LINE 18
$query = mysql_query("SELECT `questions`.`pid` FROM `responses`, `questions` WHERE `responses`.`qid`=`questions`.`id` AND `responses`.`ip`='".$_SERVER['REMOTE_ADDR']."' AND pid='".$poll['id']."'");
答案 2 :(得分:0)
您必须将一个空数组传递给max()
函数。只需在调用max()
或min()
函数之前检查数组是否为空。您可以按count($arr) > 0
进行检查,以下是文档中的一些关键点。
max()
,根据标准比较返回被认为“最高”的参数值。如果多个不同类型的值相等(例如0和'abc'),则将返回提供给该函数的第一个值。
如果传递了空数组,则将返回FALSE
并发出E_WARNING
错误。
将使用标准比较规则比较不同类型的值。例如,将一个非数字字符串与一个整数进行比较,就好像它是0,但是将对多个非数字字符串值进行字母数字比较。返回的实际值将是原始类型,不应用任何转换。如果第一个也是唯一的参数是数组,则max()
返回该数组中的最大值。如果至少提供两个参数,则max()
返回这些值中的最大值。