如何设置数组内部指针到特定位置?PHP/XML

2022-08-30 11:32:40

我试图使用XML而不是数据库构建一个小站点。

我想构建一个下一个和上一个按钮,它将相对于我显示的内容工作。

我找到了php函数next()和prev()以及current(),但我不知道如何将指针设置为特定位置,以便能够相对于当前页面进行导航。

$list=array('page1','page2','page3')

例如,如果im显示page2的内容,我怎么能告诉php我在$list[1],以便next($list)显示page3?

提前致谢


答案 1

如果您的数组始终一致地索引(例如。“page1”总是在索引“0”处),它相当简单:

$List = array('page1', 'page2', 'page3', 'page4', 'page5');
$CurrentPage = 3; // 'page4'

while (key($List) !== $CurrentPage) next($List); // Advance until there's a match

我个人不依赖于自动索引,因为自动索引总是有可能发生变化。您应该考虑显式定义键:

$List = array(
    '1' => 'page1',
    '2' => 'page2',
    '3' => 'page3',
);

编辑:如果要测试数组的值(而不是键),请使用 current()

while (current($List) !== $CurrentPage) next($List);

答案 2

使用以下函数,可以获取数组的下一个一个。如果当前无效,或者它是数组中的最后一个(第一个 - 用于上一个,则:

  • 函数 getNextVal(...) 返回第一个元素值
  • 函数 getPrevVal(...) 返回最后一个元素值

这些函数是循环的。

function getNextVal(&$array, $curr_val)
{
    $next = 0;
    reset($array);

    do
    {
        $tmp_val = current($array);
        $res = next($array);
    } while ( ($tmp_val != $curr_val) && $res );

    if( $res )
    {
        $next = current($array);
    }

    return $next;
}

function getPrevVal(&$array, $curr_val)
{
    end($array);
    $prev = current($array);

    do
    {
        $tmp_val = current($array);
        $res = prev($array);
    } while ( ($tmp_val != $curr_val) && $res );

    if( $res )
    {
        $prev = current($array);
    }

    return $prev;
}