Php AVG()函数始终返回;数组";

Php AVG()函数始终返回;数组";,php,mysql,sql,Php,Mysql,Sql,这就是我得到的,更新的 每次我回显它时,它总是返回数组。以前从未使用过此函数,但我不明白它为什么会这样做。您不应该在这里分配给$row吗 $row = mysqli_fetch_assoc($avg_result); $average = $row['AVG(rating)']; 我还建议在选择函数调用结果时使用别名: $avg_query = "SELECT AVG(rating) AS avg_rating FROM kicks WHERE userid='$userid'" ... $a

这就是我得到的,更新的


每次我回显它时,它总是返回数组。以前从未使用过此函数,但我不明白它为什么会这样做。

您不应该在这里分配给$row吗

$row = mysqli_fetch_assoc($avg_result);
$average = $row['AVG(rating)'];
我还建议在选择函数调用结果时使用别名:

$avg_query = "SELECT AVG(rating) AS avg_rating FROM kicks WHERE userid='$userid'"
...
$average = $row['avg_rating'];
如果这仍然没有给出任何结果,可能是因为:

  • 该表中没有该用户的行
  • 该表中有一行的评级设置为空值
在第二种情况下,您可以通过过滤掉这些行来修复它:

SELECT AVG(rating) AS avg_rating
FROM kicks
WHERE userid='$userid'
AND rating IS NOT NULL

您从哪里得到$row?

顺便说一句,应该这样做:

$avg_query = "SELECT AVG(id) as average_id FROM unfollowr_users";
$avg_result = mysql_query($avg_query) or die("Couldn't execute query.");

$row = mysql_fetch_assoc($avg_result);
$average = $row['average_id'];
echo "$average\n";
AVG不是PHP函数,而是SQL函数。我们只是在选择时添加更好的名称。

当PHP认为需要将数组转换为字符串时,就会得到字符串“Array”。如果您看到“Array”一词,您希望得到更有意义的输出,这意味着您试图将包含数组的变量视为实际包含字符串

当您从
echo
命令中看到此行为时,您可以尝试将以下内容放在
echo
之前,作为调试度量(假设您的变量名为
$var
):


这将告诉您数组的结构和键。然后,您应该回顾您的代码,并尝试找出为什么您的变量包含一个数组,而您期望的是一个字符串-也许您误解了标准库函数的行为,或者类似的东西。

这个问题可以通过在脚本中放置一个简单的打印或变量转储来轻松回答,看看你得到了什么。谢谢你,伙计,三年后,我看到了我是多么天真!好主意,但不,我仍然得到“数组”。只需放置变量转储或打印。这样做需要10秒钟。你在这个琐碎的问题上浪费了你和其他人10分钟的时间。@Alexander:如果你知道答案,为什么不把它贴出来?@Mark,我不知道。如果我有心灵感应能力,我可能会。这就是为什么我要求在这里进行一些var_转储,以了解实际发生的情况,因为信息太少;我也注意到了这一点,并更新了我的答案,但你是最快的。你是对的,我应该是:$row=mysqli\u fetch\u assoc($avg\u result);$average=$row['avg_评级'];但是没有显示任何符号,甚至没有“数组”@Rick Bross:您现在运行的查询是什么?这和问题中的一样吗。我使用的是mysqli,而不是mysql,出于某种原因,即使在mysqli中,也不会返回任何内容。
$avg = mysqli_fetch_assoc($avg_result);
$average = $row['AVG(rating)'];
$avg_query = "SELECT AVG(id) as average_id FROM unfollowr_users";
$avg_result = mysql_query($avg_query) or die("Couldn't execute query.");

$row = mysql_fetch_assoc($avg_result);
$average = $row['average_id'];
echo "$average\n";
echo '<pre>';
var_dump($var);
echo '</pre>';
array(0) {
0 => string(3) 'cat'
1 => string(6) 'doggie'
}