Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SplDoublyLinkedList-如何获取当前节点周围的节点_Php_Doubly Linked List_Spl - Fatal编程技术网

Php SplDoublyLinkedList-如何获取当前节点周围的节点

Php SplDoublyLinkedList-如何获取当前节点周围的节点,php,doubly-linked-list,spl,Php,Doubly Linked List,Spl,有一个关于PHP的SplDoublyLinkedList的问题。如果双链接列表的本质是每个节点都有对左右两侧节点的引用,那么为什么SplDoublyLinkedList不提供基于当前节点检索这些相邻节点的方法呢 $q=新的SplDoublyLinkedList; $q->push('A'); $q->push('B'); $q->push('C'); 对于($q->rewind();$q->valid();$q->next()){ $current=$q->current(); //$prev=

有一个关于PHP的SplDoublyLinkedList的问题。如果双链接列表的本质是每个节点都有对左右两侧节点的引用,那么为什么SplDoublyLinkedList不提供基于当前节点检索这些相邻节点的方法呢

$q=新的SplDoublyLinkedList;
$q->push('A');
$q->push('B');
$q->push('C');
对于($q->rewind();$q->valid();$q->next()){
$current=$q->current();
//$prev=$q->prev();
//$next=$q->next();
}
在上面的示例中,
prev()
next()
移动迭代光标。有没有一种方法可以不借助于
$q->key()
$q->offsetGet($pos)
,就知道当前的
$current
之前和之后是什么


谢谢

自己跟踪上一个值和下一个值,如果将for循环修改为使用while循环,则更容易:

$prev = null;
$q->rewind();
while ($q->valid()) {
    $current = $q->current();
    echo 'PREV: ', $prev, PHP_EOL;
    echo 'CURRENT: ', $current, PHP_EOL;
    $prev = $current;
    $q->next();
    $next = $q->current();
    echo 'NEXT: ', $next, PHP_EOL;
    echo PHP_EOL;
}

谢谢,我最后就是这么做的。我只是觉得奇怪,虽然强调了元素之间的双向链接,但没有办法使用这些链接。next和prev允许您向前或向后遍历数组,尽管您可以轻松地使用遍历模式实现此目的。。。。您想要实现的目标可以使用next和prev来实现,但是您需要跟踪您在数组中的位置,并显式测试有效性,这会变得更复杂