0

根据 Hunter F 的回答,我的问题的解决方案几乎完成了。只需要进行一些调整。

我稍微修改了代码并在此处提交了一个新问题:php array help required - if current array item = 'last or first item' then 'do something'

原始信息:

我希望能够创建一个带有 PREV 和 NEXT 链接的简单导航栏,我可以使用它来循环浏览页面列表。导航栏将是一个包含在所有要循环的页面中的 php。

所以我想起点是创建一个需要通过 PREV NEXT 链接循环的页面数组。

如....

$projectlist = array(
        'http://domain.com/monkey/',
        'http://domain.com/tiger/',
        'http://domain.com/banana/',
        'http://domain.com/parrot/',
        'http://domain.com/aeroplane/',
);

我想选择重新排序、添加或删除链接。因此,拥有一个像这样的自包含主阵列对我来说似乎是一个合乎逻辑的选择,因为我只需要更新这个列表以供将来添加。

每个被链接的目录都有它自己的 index.php 文件,所以我把 index.php 部分从链接的末尾去掉了,因为它不需要……或者是吗?

...我很困惑如何从这里继续。

我想我需要计算出我当前在数组中的哪个页面,然后根据它生成 PREV 和 NEXT 链接。因此,如果我从“ http://domain.com/parrot/ ”输入,我将需要相关 PREV 和 NEXT 页面的链接。

在下一阶段指导我的任何帮助或信息将不胜感激。

4

1 回答 1

1
$currentPath = explode('?', $_SERVER['REQUEST_URI']); //make sure we don't count any GET variables!
$currentPath = $currentPath[0]; //grab just the path
$projectlist = array(
        '/monkey/',
        '/tiger/',
        '/banana/',
        '/parrot/',
        '/aeroplane/',
);
if(! in_array($currentPath, $projectlist) ) {
    die('Not a valid page!'); //they didn't access a page in our master list, handle error here
}
$currentPageIndex = array_search($currentPath, $projectlist);

if($currentPageIndex == 0) { //if it's on the first page, we want them to go to the last page
    $prevlink = '<a href="'.$projectlist[ sizeof($projectlist)-1].'">Prev</a>';
} else { //otherwise just go to the n-1th page
    $prevlink = '<a href="'.$projectlist[$currentPageIndex-1].'">Prev</a>';
}


if($currentPageIndex  == sizeof($projectlist)-1 ) {     //if we're on the last page, have them go to the first page for "next"
    $nextlink = '<a href="'.$currentPageIndex[0].'">Next</a>';
} else {
    $nextlink = '<a href="'.$projectlist[$currentPageIndex+1].'">Next</a>';
}

您可能要考虑的一件事是对链接中的 href 目标进行urlencoding 。

于 2012-06-07T01:34:53.273 回答