两个函数A,F之间的区别是什么?
抱歉,我使用mysql而不是mysqli或PDO
function A ($B){
if($result = mysql_query("SELECT C FROM D WHERE E"))
{
if ($row = mysql_fetch_array($result))
{
return $text = $row['C'];
}
return 0;
}
return 0;
}还有这一条:
function F ($G){
if($result = mysql_query("SELECT C FROM D WHERE E"))
{
if ($row = mysql_fetch_array($result))
{
return $row['C'];
}
}
return 0;
}发布于 2014-10-18 18:23:51
这两种情况的最终结果是相同的(就像现在一样),因为如果查询成功,两个函数都将返回列C的值,并返回一个结果。
在第一个示例中,如果查询成功但没有返回任何结果,则A也将返回0,因此,如果您将其修改为:
function A ($B){
if($result = mysql_query("SELECT C FROM D WHERE E"))
{
if ($row = mysql_fetch_array($result))
{
return $text = $row['C'];
}
return 0;
}
return 1;
}如果返回值为0,您将知道查询成功,如果返回值为1,则意味着查询执行失败。也就是说,如果C不包含0或1值,在这种情况下,您就不能真正确定返回的0或1是列C的返回值还是函数的实际返回语句
更新
要区分这两种情况,可以在出现故障时返回false:
return false;然后检查函数的返回值是否真的为false:
if(A() === false)
{
// something went wrong, do something else
}注意:参见===,它确保相等检查只检查布尔值false,并且字符串"false"或值0或'0'不会被归类为false
https://stackoverflow.com/questions/26438611
复制相似问题