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

 } 

return ブロック (コメント付き) は機能せず、条件に関係なく関数の実行をすぐに終了します。しかし、コードに示されているように配置されている場合、return ブロックは正常に機能します。なんで?2行だけ返したい。カウンターの値にもよるので前後どちらに置いても動くはずです。$name 変数に新しい行を追加する前に条件を確認してください。最初の行が $name に追加され、$counter がインクリメントされます。その後、条件を確認してください。何が問題なのですか?

4

2 に答える 2

1

2 行に達したときに戻りたい場合でも、 3行未満の場合、関数は何も返しません。最小で 3行が必要です。

2行目を処理した$counter、関数はループをチェックします。

したがって、関数が を返すには、少なくとも 3 つの行が必要$ nameです。2 つの名前が見つかったので、これは奇妙です。

関数は必ずしも終了するとは限りませんが、単に何も返しません。

于 2013-10-22T14:24:34.813 に答える