PHP函数中的条件返回

时间:2013-10-22 14:09:38

标签: php

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

2 个答案:

答案 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;
}