如何设置指向特定位置的Arrays内部指针?PHP/XML

chr*_*ris 38 php xml arrays

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

我想构建一个next和prev按钮,它将相对于我显示的内容工作.

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

$list=array('page1','page2','page3')
Run Code Online (Sandbox Code Playgroud)

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

提前致谢

mat*_*pie 35

如果你的数组总是被一致地索引(例如'page1'总是在索引'0'),那么它非常简单:

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

while (key($List) !== $CurrentPage) next($List); // Advance until there's a match
Run Code Online (Sandbox Code Playgroud)

我个人不依赖自动索引,因为自动索引总是有可能改变.您应该考虑明确定义键:

$List = array(
    '1' => 'page1',
    '2' => 'page2',
    '3' => 'page3',
);
Run Code Online (Sandbox Code Playgroud)

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

while (current($List) !== $CurrentPage) next($List);
Run Code Online (Sandbox Code Playgroud)

  • 如果数组不包含键,则代码将以无限循环结束.你应该检查指针是否没有到达结尾:`while(key($ List)!== $ CurrentPage && key($ List)!== null)next($ List);` (10认同)
  • 实际上,你会想要使用`current()`.in_array用于查看值是否在数组中.http://php.net/current (2认同)

And*_*hei 6

使用下面的函数,您可以获得数组的下一个上一个 .如果当前无效或者它是数组中的最后一个(first - for prev),则:

  • 函数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;
}
Run Code Online (Sandbox Code Playgroud)