КАК ограничить массив определенным числом?

0

на самом деле то, что я пытаюсь сделать, это хранить входящие запросы в базе данных, а затем отображать на веб-странице, ограничивающей определенное число, например, 10 с заголовком "Недавние поиски". если вы LIMIT 10 в запросе базы данных, то он останавливается после 10. поэтому мысль отключит цикл, но в обоих случаях он остановится на 10. так что после этого, что когда-либо выполняется, он не будет обновлять его. есть ли кто-нибудь, кто может мне помочь в этой ситуации?

$result = mysql_query("SELECT * FROM query ORDER BY regtime DESC");
while($row = mysql_fetch_array($result))
{
  echo "<img src='bullet.gif' align='absmiddle' class='col1ab'><a class='col1ab' href=".$row['web']." >www.".$row['web']."</a><br>";
}
  • 1
    Что именно ты пытаешься сделать?
  • 0
    Он пытается сделать то , что LIMIT 10 делает в заявлении SQL в while петли вместо этого.
Показать ещё 3 комментария
Теги:

5 ответов

4
Лучший ответ
$count = 0;
$result = mysql_query("SELECT * FROM query ORDER BY regtime DESC");
while($count < 10 && $row = mysql_fetch_array($result))
{
  $count++;
  echo "<img src='bullet.gif' align='absmiddle' class='col1ab'><a class='col1ab' href=".$row['web']." >www.".$row['web']."</a><br>";
}
  • 2
    +1 Просто придирка, но я бы поставил сравнение $ count перед извлечением, чтобы оно замкнуло, сохранив чтение.
  • 0
    Отличный момент, @webbiedave. Готово!
1

Ограничить какой массив? Я не вижу массив в вашем коде. Если вы хотите ограничить количество эхо-сигналов, которые вы делаете, вы можете подсчитать переменную, а затем сломаться, как только вы достигнете 10, например:

$result = mysql_query("SELECT * FROM query ORDER BY regtime DESC");
while($row = mysql_fetch_array($result))
{
  if ($i++ >= 10) break;
  echo "<img src='bullet.gif' align='absmiddle' class='col1ab'><a class='col1ab' href=".$row['web']." >www.".$row['web']."</a><br>";
}
0

Почему никто не придумал:

SELECT * FROM query ORDER BY regtime DESC LIMIT 0,6

0

Не запрошенный ответ, но...

Не хранить запросы. Сделайте ваши данные эффективными для поиска. (Дружественная схема поиска, индексирование, разбиение на разделы, дополнительное оборудование)

причины: данные запроса больше не являются реальным временем, если они считываются из таблицы запросов для дублирования данных в таблице запросов требуется больше места для заполнения таблицы запросов требуется больше io.

используйте 2 запроса или оценку (насколько важна точность? (поскольку она хранится, число, скорее всего, неточно))

"SELECT * FROM query ORDER BY regtime DESC" с LIMIT (10) "SELECT count (*) FROM query..."

0

Попробуйте следующее:

$result = mysql_query("SELECT * FROM query ORDER BY regtime DESC");

$counter = 0;
while($row = mysql_fetch_array($result))
{
  echo "<img src='bullet.gif' align='absmiddle' class='col1ab'><a class='col1ab' href=".$row['web']." >www.".$row['web']."</a><br>";

  if (++$counter === 10) break;
}

Цикл увеличивает значение переменной $counter, и когда оно становится равным 10, ключевое слово break выходит из цикла while, предоставляя вам всего 10 итераций.

  • 0
    Я бы удалил if ($counter === 10) break; и заменить $counter++; с if (++$counter === 10) break; , Это должно сохранить дополнительное чтение, а также.
  • 0
    @ Джозеф: Очень умно, хорошая мысль. Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню