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

在PHP中如何使用函数作为IF语句的参数?,php,mysql,Php,Mysql,我有一个教程中的以下代码,但是即使在看了几个教程之后,我也不能完全理解它的确切工作原理,尽管它非常基本 if(mysql_num_rows($result)) { while($term = mysql_fetch_assoc($result)) { $terms[] = array('term'=>$term); } } 我无法理解IF语句在这里实际测试的内容。我知道MySQL_num_rows函数计算数据库查询返回的行数并返回一个整

我有一个教程中的以下代码,但是即使在看了几个教程之后,我也不能完全理解它的确切工作原理,尽管它非常基本

  if(mysql_num_rows($result)) { 
    while($term = mysql_fetch_assoc($result)) {   
      $terms[] = array('term'=>$term);    
    }
  }
我无法理解IF语句在这里实际测试的内容。我知道MySQL_num_rows函数计算数据库查询返回的行数并返回一个整数(在这个查询中只有一行),但这对IF语句意味着什么。我假设它正在测试以确保它不为null,这是正确的吗?即使是这样,这背后的确切逻辑是什么


对于初学者的问题,很抱歉,刚刚开始。

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

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

此函数
mysql\u num\u rows($result)
返回所选行数,如果行数超过0,则将其转换为TRUE,否则0->false

此函数
mysql\u num\u rows($result)
返回所选行数,如果
if
语句中的行数超过0,则该行数转换为TRUE,否则0->FALSE

在检查之前,该值将转换为布尔值

因此,
mysql\u num\u rows
返回一个数字。如果它是
0
,它将转换为
false
,而
1
(或更高)将变为
true
。然后,
if
运行与否取决于布尔转换

从:

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

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

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

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

因此,
mysql\u num\u rows
返回一个数字。如果它是
0
,它将转换为
false
,而
1
(或更高)将变为
true
。然后,
if
运行与否取决于布尔转换

从:

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

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

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

PHP在解释if语句时非常松散,它正在测试函数是否返回了任何内容,或者它是否为TRUE(任何实例化的内容都算作TRUE,因此如果它返回了任何行,则算作TRUE)、false(即not INSTANCATED返回0或错误)或null/none(基本上与false相同)。

PHP在解释if语句时非常松散,它正在测试函数是否返回了任何内容,或者该内容是否为真(任何INSTANCATED都算作真,因此如果它返回了任何行,则算作真)、假(即not instanciated返回0或错误)或null/none(基本上与false相同)。

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

看看这个:


因此while循环在此点停止。

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

看看这个:


因此while循环到此为止。

第一步是找到一个更新的教程,它不会告诉您使用不推荐的函数。没有参数,它会计算表达式。所有函数调用恰好都是这样。(顺便说一句,其他语言都有“过程”,与函数不同,它只能用作语句。在PHP中,所有函数都是函数,而不管返回值如何。)第二步是查看手册页面。查看返回值,应该会清楚这里发生了什么。感谢关于更新函数的建议,我会查看,至于手册页面,我已经查看了,但对其中一些内容的解释不正确。第一步是查找更新的教程,但没有告诉你使用不推荐使用的函数。没有参数,它计算表达式。所有函数调用恰好都是这样。(顺便说一句,其他语言都有“过程”,与函数不同,它只能用作语句。在PHP中,所有函数都是函数,不管返回值如何。)第二步是查看手册页面。查看返回值,应该会清楚这里发生了什么。感谢您对更新函数的建议,我将查看它,至于手册页面,我已经查看了,但对其中一些内容的解释不正确。
mysql_num_rows()
不应该返回
null
。不,我是说