PHP:如何做foreach并从集合的第六个元素开始?

iam*_*rds 5 php foreach loops

是否有可能从特定元素[第六元素]开始一个foreach循环?

即时通讯使用此代码:

    <?php
    $num=1;
    foreach($temp_row as $key => $value) {

        echo $num;

        $num++;
    }
    ?>
Run Code Online (Sandbox Code Playgroud)

谢谢 :)

Rob*_*ert 16

你可以使用例如array_slice()

$num = 5; //it will start from sixth element

foreach(array_slice($temp_row, $num) as $key => $value) {

     echo $key.'=>'.$value.'<br>';
}
Run Code Online (Sandbox Code Playgroud)


Spu*_*ley 6

不是直接的foreach().线索在each名称的一部分.它遍历所有元素.

那么我们怎样才能实现呢?

你总是可以if()在循环中有一个子句来检查键值,然后再完成其余的工作.

但是,如果这对你来说不可行,无论出于何种原因,我建议使用a FilterIterator来实现这一点.

FilterIterator是一个标准的PHP类,您可以扩展它以创建自己的过滤器.然后可以使用标准foreach()循环循环迭代器,仅拾取过滤器接受的记录.

上面链接的手册页上有一些例子会有所帮助,但这里有一个简单的例子我已经为你拼凑了:

class SkipTopFilter extends FilterIterator {
    private $filterNum = 0;
    public function __construct(array $array, $filter) {
        parent::__construct(new ArrayIterator($array));
        $this->filterNum = $filter;
    }
    public function accept() {
        return ($this->getInnerIterator()->key() >= $this->filterNum);
    }
}

$myArray = array(13,6,8,3,22,88,12,656,78,188,99);
foreach(new SkipTopFilter($myArray, 6) as $key=>$value) {
    //loop through all records except top six.
    print "rec: $key => $value<br />";
}
Run Code Online (Sandbox Code Playgroud)

经测试; 输出:

rec: 6 => 12
rec: 7 => 656
rec: 8 => 78
rec: 9 => 188
rec: 10 => 99
Run Code Online (Sandbox Code Playgroud)