首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP使用count()和数组

问PHP使用count()和数组
EN

Stack Overflow用户
提问于 2010-05-27 02:09:42
回答 4查看 680关注 0票数 2

我正在尝试使用count()函数来获取数组中元素的数量,结果让我有点费解,考虑到下面的例子。

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

谢谢

代码语言:javascript
复制
$q = mysql_query("select password from users where user_name = '" .  $userID   .   "'");
$check = mysql_fetch_array($q);

$result = count($check);

echo "RESULT:" . $result;
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-27 02:17:13

这是计算结果集中行数的错误方法。首先,从关于mysql_fetch_array()的文档中

返回与所读取的行相对应的字符串数组,如果没有更多的行,则返回FALSE。

因此,如果我们这么做

代码语言:javascript
复制
echo count( false );

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

如果var不是数组或实现了Countable接口的对象,则返回1。

要进行适当的计数,请使用mysql_num_rows()

代码语言:javascript
复制
$q = mysql_query("select password from users where user_name = '" .  $userID   .   "'");
$result = mysql_num_rows( $q );

if ( 0 == $result )
{
  // no rows in result
}
票数 7
EN

Stack Overflow用户

发布于 2010-05-27 02:13:36

count()返回1,因为在失败的情况下,$check不是一个数组。

从documentation

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

但无论如何,您都应该直接处理错误情况(如果查询失败,您的代码甚至不应该达到分析其结果的地步)。同样,正如其他人所说的那样,这不是计算查询返回的结果数量的方法,因为这是mysql_num_rows()的作用

票数 1
EN

Stack Overflow用户

发布于 2010-05-27 02:15:25

使用mysql_num_rows而不是count。对于值FALSE,count返回1

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2915557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档