[ PHP ] foreach 遍历后的数组如何分页!

2018-02-20 09:45:56 +08:00
 xiamuguizhi

目前的代码:

			<?php foreach ($data as $id => $v) {
				$tpl = ' <li> <h3>%s</h3> <h2><a href="%d.html" target="_blank">%s</a></h2></li> ';
				echo sprintf($tpl, $v['date'], $id, $v['title']);
			} ?>	

要求能遍历后 每次显示 10 页 分页 输出

我目前是用 js 分页,效果不是很好希望能 foreach 遍历后数组分页!

希望效果如下:

2796 次点击
所在节点    问与答
9 条回复
qiayue
2018-02-20 09:51:20 +08:00
不要一次把数据全部取出来,每页想显示多少条就取多少条,第几页就偏移多少
zyqf
2018-02-20 10:26:46 +08:00
Mysql limit offset
zyqf
2018-02-20 10:28:30 +08:00
对不起,没审题,自己在 PHP 里写个偏移方法
liuhaotian
2018-02-20 11:01:07 +08:00
phpok
2018-02-20 11:05:14 +08:00
数据都出来了,将一维数组割成多个数组,用 array_chunk,然后下标从 0 开始表示第一页就是了~
xiamuguizhi
2018-02-20 11:10:52 +08:00
@phpok 能写下代码? php 新手 纠结中!!!!
des
2018-02-20 11:49:16 +08:00
@phpok 取下标的话,刚好添加了数据就会分页有重复的

如果数据一直不多的话,可以直接输出,然后前端分页。
不过鉴于你的水平,建议先看完 PHP 文档的数组操作部分再写这个
phpok
2018-03-01 23:03:34 +08:00
@xiamuguizhi

代码如下:
``` php
$list = array(1,2,3,4,5,6,7,8,9);
$mlist = array_chunk($list,4);
//看分出了多少
echo "<pre>".print_r($mlist,true)."</pre>";

//计算共有几页
$totalpage = count($mlist);
$nowpage = isset($_GET['pageid']) ? intval($_GET['pageid']) : 1;
if(!$nowpage){
$nowpage = 1;
}

$position = $nowpage - 1;

$prevpage = $nowpage > 1 ? "?pageid=".($nowpage-1) : '?pageid=1';
$nextpage = ($nowpage + 1) > $totalpage ? '?pageid='.$totalpage : '?pageid='.($nowpage + 1);

$list = $mlist[$position];

echo "<pre>".print_r($list,true)."</pre>";
echo 'Toal: '.$totalpage;
echo ' <a href="'.$prevpage.'">Prev</a> ';
echo ' <a href="'.$nextpage.'">Next</a> ';
```
phpok
2018-03-01 23:05:10 +08:00
@des 没那么仔细去考虑过

不过说实话,数据全部读出来的确不是个好的做法,建议有多少取多少

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/431294

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX