• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • ArrayIterator::seek()

    (PHP 5,PHP 7)

    Seek to position

    说明

    publicArrayIterator::seek(int $position) : void
    Warning

    本函数还未编写文档,仅有参数列表。

    参数

    $position

    The position to seek to.

    返回值

    没有返回值。

    <?php
    // didn't see any code demos...here's one from an app I'm working on
    $array = array('1' => 'one',
            '2' => 'two',
            '3' => 'three');
    $arrayobject = new ArrayObject($array);
    $iterator = $arrayobject->getIterator();
    if($iterator->valid()){
      $iterator->seek(1);      // expected: two, output: two
      echo $iterator->current();  // two
    }
    ?>
    
    <?php
    //seek alter the iterator's internal indice instead of the value that key() returns. 
    //This is a big trap if combining with uasort/natsort function. 
    $a = new ArrayObject([4,3,2,1]);
    $it = $a->getIterator();
    $it->natsort();  //The Iterator preserve the key while sorting the array 
    $it->rewind();
    $first = $it->key();  //The first element is 1 and it's key is 3
    echo $first. PHP_EOL; // 3
    $it->next();
    $second = $it->key();
    echo $second. PHP_EOL; //2
    $it->next();
    $it->seek($first);       //Was intended to seek to element 1, key 3, indice 0
    echo $it->key() . PHP_EOL; //end up 0 because seek took parameter as indice instead of key. It seek to element indice 3, element 4 key 0.
    var_dump($it);
    /* Output: 
    3
    2
    0
    object(ArrayIterator)#2 (1) {
     ["storage":"ArrayIterator":private]=>
     object(ArrayObject)#1 (1) {
      ["storage":"ArrayObject":private]=>
      array(4) {
       [3]=>
       int(1)
       [2]=>
       int(2)
       [1]=>
       int(3)
       [0]=>
       int(4)
      }
     }
    }
    */