多维数组的分页

时间:2010-12-01 21:49:15

标签: php pagination

API的样本结果格式如下。 “限制”可以设置为500.我已经尝试了各种分页类来解析结果但是我的尝试都没有成功。他们提供选项[“page”] => int(x)他们说这使得分页很容易。很容易代码神,也许不是我。非常感谢任何帮助。

$var = array(7) { 
      ["errors"]=> array(0) { } 
      ["warnings"]=> array(1) { 
        [0]=> array(2) { 
          ["code"]=> string(26) "api_class_update_available" 
          ["msg"]=> string(58) "The Api class is now available in version 1.6" 
        } 
      } 
      ["data"]=> array(4) { 
        [0]=> array(3) { 
          ["url"]=> string(7) "http://" 
          ["keyword"]=> string(7) "keyword1"  
          ["price"]=> string(5) "23.99" 
        } 
        [1]=> array(3) { 
          ["url"]=> string(7) "http://" 
          ["keyword"]=> string(7) "keyword2"  
          ["price"]=> string(5) "19.99" 
        }  
        [2]=> array(3) { 
          ["url"]=> string(7) "http://" 
          ["keyword"]=> string(7) "keyword3"  
          ["price"]=> string(5) "29.99" 
        } 
        [3]=> array(3) { 
          ["url"]=> string(7) "http://" 
         ["keyword"]=> string(7) "keyword4"  
          ["price"]=> string(5) "9.99" 
        } 
      }
      ["countryCode"] => string(2) "US" 
      ["page"] => int(1) 
      ["limit"]=> int(4) 
    } 

2 个答案:

答案 0 :(得分:1)

大多数分页算法在假设整个数据集的大小已知的情况下运行。在这个特殊的例子中,情况似乎并非如此,因此“开箱即用”的分页算法可能无法帮助您。

您正在使用的API似乎很乐意让您按任意页码获取数据页,即使该页号没有数据(即data键将是一个空数组)。

那么 - 这里做什么呢?你有几个选择

  1. 仅显示“上一个”和“下一个”分页链接,并且仅在用户请求新的数据页面时从API获取新数据。这里的踢球者将是这样的:你必须每次预取和计算“下一页”页面中的数据,以确保实际上 下一页(除非记录的数量)当前获取的页面少于限制)
  2. 预取 ALL 数据(在与#1类似的过程中,只有您自动完成而不是通过用户点击)并自行分组/分页。这种方法的问题是你现在承担了在请求之间存储数据集的负担,这可能非常大。它还可能涉及初始页面加载的大量API开销(忽略缓存提供的优化)
  3. 简而言之:你还有一些工作要做。

答案 1 :(得分:0)

你的问题有点不连贯,但我会尝试回答。听起来你只需要实现一些基本的分页。这是一些链接。

http://google.com/search?q=php+pagination

http://forums.devnetwork.net/viewtopic.php?f=1&t=99545&p=537019#p537019

您将使用array_slice()而不是数据库查询。同样的概念。