警告:max()[function.max]:数组必须包含至少一个元素 - 这是什么?

时间:2011-09-28 18:05:14

标签: php mysql

所以,我试图做一个民意调查,当我运行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行

有任何帮助吗? :■

3 个答案:

答案 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进行检查,以下是文档中的一些关键点。

php中的

max(),根据标准比较返回被认为“最高”的参数值。如果多个不同类型的值相等(例如0和'abc'),则将返回提供给该函数的第一个值。 如果传递了空数组,则将返回FALSE并发出E_WARNING错误。

将使用标准比较规则比较不同类型的值。例如,将一个非数字字符串与一个整数进行比较,就好像它是0,但是将对多个非数字字符串值进行字母数字比较。返回的实际值将是原始类型,不应用任何转换。如果第一个也是唯一的参数是数组,则max()返回该数组中的最大值。如果至少提供两个参数,则max()返回这些值中的最大值。