是否有可能从特定元素[第六元素]开始一个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)
不是直接的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)