0

我从教程中获得了以下代码,但是即使在查看了几个教程之后,我也无法完全理解它的确切工作原理,尽管它非常基础。

  if(mysql_num_rows($result)) { 
    while($term = mysql_fetch_assoc($result)) {   
      $terms[] = array('term'=>$term);    
    }
  }

我无法理解 IF 语句在这里实际测试的内容。我知道 MySQL_num_rows 函数正在计算我的数据库查询返回的行数并返回一个整数(在此查询的情况下只有一行),但这对 IF 语句意味着什么。我假设它正在测试以确保它不为空,这是正确的吗?即使这背后的确切逻辑是什么。

对不起初学者的问题,刚刚开始。

4

5 回答 5

2

if语句中,值在检查之前被转换为布尔值。

所以,mysql_num_rows返回一个数字。如果它是0,它将转换为false,并且1(或更高)变为true。然后if运行与否取决于布尔转换。

来自PHP 文档

转换为布尔值时,会考虑以下值FALSE

  • 布尔值 FALSE 本身
  • 整数 0(零)
  • 浮点数 0.0(零)
  • 空字符串和字符串“0”
  • 一个元素为零的数组
  • 具有零成员变量的对象(仅限 PHP 4)
  • 特殊类型 NULL(包括未设置的变量)
  • 从空标签创建的 SimpleXML 对象

考虑所有其他值TRUE(包括任何资源)。

于 2012-11-15T16:21:15.657 回答
1

它正在测试以了解是否有结果。如果没有返回结果,则值为 0,其计算结果为 false,因此将跳过循环。

于 2012-11-15T16:20:40.847 回答
0

此函数mysql_num_rows($result)返回所选行的数量,如果超过 0 则转换为 TRUE,否则为 0 -> FALSE

于 2012-11-15T16:21:04.417 回答
0

PHP 在解释 if 语句的方式上非常松散,它正在测试函数是否返回了任何东西或者它是否为真(任何实例化的东西都算作真,所以如果它返回了任何行,它就算作真) , false(即未实例化已返回 0 或错误)或 null/none(与 false 基本相同)。

于 2012-11-15T16:23:39.287 回答
0

在这个循环的每个序列中,它获取指针指向的记录。然后指针转到下一条记录。但是如果没有记录(最后),则$term数组将为空,相当于布尔值FALSE

看看这个: http: //php.net/manual/en/language.types.boolean.php

所以while循环在这一点上停止。

于 2012-11-15T16:26:54.227 回答