php совсем печален, развращает, и наличием высокоуровневых функций учит писать неправильный код.
два цикла, делают одно и тоже, но классический for быстрее в 4 раза.
<?php
for ($i = $start; $i < $end; $i+=$step)
{
//do something with array
}
foreach (range($start, $end, $step) as $i)
{
//do something with array
}
?>тут выкладывал постраничную навигацию, должен извиниться за свой говнокод и вкладываю исправленную версию с православным for.
хотите писать хороший быстрый код? забудьте обо всех этих читерских foreach и прочей лаже, это удел школьников недалекого ума.
<?php
$page_count = ceil(($db->querySingle('SELECT COUNT(*) FROM blog_posts') / 10));
$page_cache = '';
$page = (isset($_GET['page']))?(int) $_GET['page']:$page_count;
for ($page_id = $page_count; $page_id > 0; $page_id--) {
  if ($page == $page_id) {
    $page_cache .= ' '.$page_id;
  }
  elseif (($page_id == $page_count) || ($page_id == 1)) {
    $page_skip = 1;
    $page_cache .= ' <a href="?page='.$page_id.'">'.$page_id.'</a>';
  }
  elseif (($page < ($page_id + 2)) && ($page > ($page_id - 2))) {
    $page_skip = 1;
    $page_cache .= ' <a href="?page='.$page_id.'">'.$page_id.'</a>';
  }
  elseif ($page_skip > 0) {
    $page_skip--;
    $page_cache .= ' ...';
  }
}
echo $page_cache;
?>
<?php
$try = $db->query('
  SELECT *
  FROM blog_posts
  LIMIT '.($page * 10 - 10).', 9
  ');
?>
спасибо, извините.














