Php foreach数组结果分页
下面的代码会导致超过27k个ID,因此我想将结果分页为每页100个IDPhp foreach数组结果分页,php,arrays,pagination,Php,Arrays,Pagination,下面的代码会导致超过27k个ID,因此我想将结果分页为每页100个ID function subtree($id, $parents) { echo ' <tr><td> <b>Client No.:</b> </td><td> '; echo $id; echo ' </td></tr> '; if (isset($parents[$id])) { f
function subtree($id, $parents)
{
echo ' <tr><td> <b>Client No.:</b> </td><td> ';
echo $id;
echo ' </td></tr> ';
if (isset($parents[$id])) {
foreach ($parents[$id] as $child) {
subtree($child, $parents);
}
}
}
函数子树($id,$parents)
{
echo“客户编号:”;
echo$id;
回声';
if(isset($parents[$id])){
foreach($parents[$id]作为$child){
子树($child,$parents);
}
}
}
$parents是主sql查询中的数组:
$id是父id
当我调用函数时,结果都在同一页中,我现在要做的是将这些结果分页为每页100个。试试这个
function subtree($id, $parents)
{
echo ' <tr><td> <b>Client No.:</b> </td><td> ';
echo $id;
echo ' </td></tr> ';
if (isset($parents[$id])) {
foreach ($parents[$id] as $child) {
subtree($child, $parents);
}
}
}
$count = 0;
function subtree($id, $parents)
{
echo ' <tr><td> <b>Client No.:</b> </td><td> ';
echo $id;
echo ' </td></tr> ';
if (isset($parents[$id]))
foreach ($parents[$id] as $child) {
if ($count === 100) {
break;
}
subtree($child, $parents);
$count++;
}
}
$count=0;
函数子树($id$parents)
{
echo“客户编号:”;
echo$id;
回声';
if(isset($parents[$id]))
foreach($parents[$id]作为$child){
如果($count==100){
打破
}
子树($child,$parents);
$count++;
}
}
这将帮助您每页显示100个结果。现在,您可以创建链接,在下一页显示下100条记录改进数据库例程。在对多维数据进行分页之前,您可能希望使用一个临时表来帮助展开和规范化多维数据。你需要记录你在哪一页,每一页有多大 如果您使用的是mysql,请使用自动生成的id列指定从哪里开始
和id>300
,然后添加LIMIT 100
,以说明从哪里结束。
在oracle上,它将是,RowNum介于300和400之间
另一个选项是使用递归函数构建一个id的平面列表并将其存储在会话中,然后在此基础上运行分页例程
您的另一个选项是将递归重写为堆栈和循环结构,这样您就可以知道在遍历过程中已经走了多远,为此页指定一个起点,遍历它直到到达开始计数器,发出数据直到到达结束标记,然后返回
当然,最糟糕的选择是,如果($count>=$start&&$count)在代码末尾有一个额外的}被删除了,但结果仍然没有分页,只使用globals来表示您试图打印出多少内容,并放入一个。@PeeHaa,一页中的结果太大了,所以需要将结果分页为100页。