我的函数中有一个返回语句:
function fun($result)
{
$counter = 0;
while($row=mysql_fetch_array($result))
{
/*if($counter==2)
{
return $name;
}*/
$user=$row['message'];
$sql2="select username from members where id='$user'";
$result2=mysql_query($sql2);
$row2=mysql_fetch_array($result2);
$name .= $row2['username']." and ";
$counter++;
if($counter==2)
{
return $name;
}
}
}
返回块(已注释)不起作用,无论条件如何,都会立即终止函数的执行。但是,如果按照代码所示放置到位,则返回块就可以正常工作。为什么?我只想返回 2 行。似乎无论放在之前还是之后都应该起作用,因为它取决于计数器的值。在向变量添加新行之前检查条件$name。第一行将添加到$name并递增$counter,然后检查条件等。怎么了?
函数在少于 3 行时不返回任何内容,即使你想在达到 2 时返回,你至少需要 3 行。
该函数在您处理第二行后检查循环中的$counter
。
所以函数至少需要 3 行才能返回$ name
。 这很奇怪,因为您希望它返回,然后找到 2 个名称。
该函数不一定终止,但根本不返回任何内容。
您的函数可能永远无法到达 return 语句。您必须检查这两个条件是否为假,如果是,则返回$name
。for 循环应该做你需要的。
function fun($result)
{
for($cnt=0; ($row=mysql_fetch_array($result)) AND $cnt<2; $cnt++)
{
$name .= 'Your Data';
}
return $name;
}