我从教程中获得了以下代码,但即使在查看了几个教程后,我也无法完全理解它的确切工作方式,尽管它非常基础。
if(mysql_num_rows($result)) {
while($term = mysql_fetch_assoc($result)) {
$terms[] = array('term'=>$term);
}
}
我无法理解IF声明在这里实际测试的内容。我知道MySQL_num_rows函数正在计算我的数据库查询返回的行数并返回一个整数(在此查询的情况下只有一行),但这对IF语句意味着什么。我假设它正在测试以确保它不为空,这是正确的吗?即使它背后的确切逻辑是什么。
对不起刚开始的初学者问题。
答案 0 :(得分:2)
在if
语句中,值在检查之前转换为布尔值。
因此,mysql_num_rows
会返回一个数字。如果是0
,则转换为false
,1
(或更高)变为true
。然后if
运行或不运行,具体取决于布尔转换。
来自PHP docs:
转换为布尔值时,以下值被视为FALSE
:
其他每个值都被视为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循环在此时停止。