我的函数中有一个return语句:
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递增,然后检查条件等等。出了什么问题?
答案 0 :(得分:1)
当行数少于 3 时,函数不会返回任何内容,即使您希望在达到2时返回,也需要 3 行最少。
该功能会在您处理完第二行之后的循环中检查$counter
。
因此函数至少需要3行才能返回$ name
。这很奇怪,因为你希望它返回,然后找到2个名字。
该功能不一定会终止,但根本不会返回任何内容。
答案 1 :(得分:0)
您的功能可能永远不会到达退货声明。您必须检查两个条件是 false ,然后返回$name
(如果是)。 for 循环可以满足您的需求。
function fun($result)
{
for($cnt=0; ($row=mysql_fetch_array($result)) AND $cnt<2; $cnt++)
{
$name .= 'Your Data';
}
return $name;
}