PHP使用count()和数组

PHP使用count()和数组,php,Php,我试图使用count()函数获得数组中的元素数量,考虑到下面的示例,结果让我有点困惑 假设提供的用户ID是错误的,因此没有匹配项,那么计数函数的结果不是0吗?但它是1。你能解释一下为什么吗 谢谢 $q = mysql_query("select password from users where user_name = '" . $userID . "'"); $check = mysql_fetch_array($q); $result = count($check); echo

我试图使用count()函数获得数组中的元素数量,考虑到下面的示例,结果让我有点困惑

假设提供的用户ID是错误的,因此没有匹配项,那么计数函数的结果不是0吗?但它是1。你能解释一下为什么吗

谢谢

$q = mysql_query("select password from users where user_name = '" .  $userID   .   "'");
$check = mysql_fetch_array($q);

$result = count($check);

echo "RESULT:" . $result;
count()
返回1,因为在发生故障时,
$check
不是数组

从:

如果var不是数组或具有实现的可数接口的对象,则返回1


但无论如何,您都应该直接处理错误案例(如果查询失败,您的代码甚至不应该分析其结果)。同样,正如其他人正确地说的那样,这不是计算查询返回的结果数的方式,因为这就是
mysql\u num\u rows()
的作用,如果没有更多的行,则
mysql\u fetch\u array
返回false<代码>计数(错误)=1


如果要计算结果的数量,请尝试使用mysql\u num\u rows。

使用而不是计数。为值
FALSE

返回1,这是计算结果集中行数的错误方法。首先,从文件上看

返回一个字符串数组,该字符串 对应于获取的行,或 如果没有更多行,则为FALSE

因此,如果我们这样做

echo count( false );
我们可以看到输出是
1
。为什么?因为文档也告诉我们这一点

如果var不是数组或对象 实现了可数接口, 1将被退回

要正确计数,请使用


调试代码可以让您了解$result实际上是什么。另外,不要忘记您的朋友是_array()。$numrows=mysql_num_rows($q);
$q = mysql_query("select password from users where user_name = '" .  $userID   .   "'");
$result = mysql_num_rows( $q );

if ( 0 == $result )
{
  // no rows in result
}