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
');
?>
спасибо, извините.