-2

我的函数中有一个 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 递增,然后检查条件等等。出了什么问题?

4

2 回答 2

1

当少于3行时,函数不会返回任何内容,即使您想在达到 2 时返回,您至少需要3行。

处理完第二行,该函数$counter会在循环中检查。

因此,函数至少需要 3 行才能返回$ name. 这很奇怪,因为您希望它返回然后找到 2 个名称。

该函数不一定会终止,只是不会返回任何内容。

于 2013-10-22T14:24:34.813 回答
0

您的函数可能永远不会到达 return 语句。您必须检查这两个条件是否为$name,如果是则返回。for循环应该可以满足您的需要。

function fun($result)
{

  for($cnt=0; ($row=mysql_fetch_array($result)) AND $cnt<2; $cnt++)
  {
    $name .= 'Your Data';
  }

return $name;
} 
于 2013-10-22T14:27:52.493 回答