如何正确显示每页的部分结果,而不是所有结果。 (PHP)

时间:2013-10-08 16:45:22

标签: php json

我正在使用json_decode解码一个很长的JSON文件,我希望每页显示20个结果。 像这样;

echo ($decodedJson['Workers'][0]['Name'])
echo ($decodedJson['Workers'][1]['Name'])
                  .
                  .

我遇到困难的部分是,在解码所有这些JSON之后,当我转到Page = 2($ page = $ _GET [“Page”];)PHP再次执行json_decode并且成本很多时间。我知道这是一个极其荒谬的问题,但请帮助我。

如何解码一次,只构建一次我的对象或数组并在每一页上使用它?

还有其他方式在页面之间导航吗?我正在使用函数来学习当前的URL,更改“Page = X”部分。并用它回应一个“”。

提前致谢。

2 个答案:

答案 0 :(得分:4)

由于http stateless性质,您必须在每次请求时对其进行解码。除非你坚持到某个地方,否则它可以用于下一个请求。

根据数据的性质/结构/范围,您可以将其存储在文件,(一个或多个)数据库表或$_SESSION超全局中。

关于您的第二个问题,您也可以使用$_SESSION,甚至cookies,这样您的脚本就会“记住”用户的页面,即使他们离开又返回。

答案 1 :(得分:0)

设置$ _SESSION ['data'] = JSON文件,然后在后续页面上,参考您的会话数据并使用页码来确定您要显示的JSON数据的子集。假设每页有10个结果,有些逻辑如下:

$start = (pageNum * 10) - 11;
for($i = $start; $i < $start + 10; $i++) {
// process output
}