因此,这已经让我发疯了好几天。我已经尝试过THISTHAT,但是没有任何效果。这是基本的摘要:

我有一个200多个位置的MySQL数据库。用户输入他们的邮政编码,我想给他们在100英里范围内的6个随机位置。一切都很好,除非我无法将结果限制为6。它将为我提供for ($x=0...)位)时,得到相同的结果,只有每个重复重复6次,然后列出下一个。这是返回所有位置的相关代码。任何帮助都可以避免我将计算机扔出窗户。

$sql = "SELECT * FROM locations ORDER BY RAND()";
$result = mysql_query($sql, $dbase2);

while ($row = mysql_fetch_array($result))
    {

$city = $row['city'];
$id= $row['id'];
$miles = calculateDistance($lat, $lon, $point2_lat,$point2_lon);

  if ($miles < "100")
      { for ($x=0; $x<6; $x++){
       echo $city . " is about " . round($miles) . " miles away.<br />";
         };
      };
  };


就像我说的那样,出于这篇文章的缘故,我试图将其缩减为重要的部分。让我知道我的示例中是否缺少重要的内容。

最佳答案

请进行以下更改:

$count = 0;
while (($row = mysql_fetch_array($result)) && ($count < 6))
    {

    $city = $row['city'];
    $id= $row['id'];
    $miles = calculateDistance($lat, $lon, $point2_lat,$point2_lon);

    if ($miles < 100.0) {
       echo $city . " is about " . round($miles) . " miles away.<br />";
       $count = $count + 1;
      };
  };


还有更多优雅的方法...

关于php - PHP循环x次,使用while和if,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24420179/

10-11 00:12