如何使用函数作为IF语句的参数在PHP中工作?

时间:2012-11-15 16:17:55

标签: php mysql

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

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

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

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

5 个答案:

答案 0 :(得分:2)

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

因此,mysql_num_rows会返回一个数字。如果是0,则转换为false1(或更高)变为true。然后if运行或不运行,具体取决于布尔转换。

来自PHP docs

转换为布尔值时,以下值被视为FALSE

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

其他每个值都被视为TRUE(包括任何资源)。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

PHP在如何解释if语句方面非常松散,它正在测试该函数是否已经返回任何内容,或者它是否为true(任何instanciated都计为true,所以如果它返回任何行都是如此as true),false(即没有instanciated返回0或错误)或null / none(基本上与false相同)。

答案 4 :(得分:0)

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

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

所以while循环在此时停止。