是否可以从特定元素[第六元素]开始一个foreach循环?
我正在使用此代码:
<?php
$num=1;
foreach($temp_row as $key => $value) {
echo $num;
$num++;
}
?>
谢谢:)
答案 0 :(得分:16)
您可以使用例如array_slice()
$num = 5; //it will start from sixth element
foreach(array_slice($temp_row, $num) as $key => $value) {
echo $key.'=>'.$value.'<br>';
}
答案 1 :(得分:6)
不直接使用foreach()
。线索在名称的each
部分。它遍历所有元素。
那么我们怎样才能实现呢?
在循环中你总是可以有一个if()
子句来检查键值,然后再做其余的工作。
但是,如果这对你不适用,无论出于何种原因,我建议使用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 />";
}
测试;输出:
rec: 6 => 12
rec: 7 => 656
rec: 8 => 78
rec: 9 => 188
rec: 10 => 99
答案 2 :(得分:2)
<?php
$num=0;
foreach($temp_row as $key => $value) {
if( ++$num < 6 )
{
continue;
}
echo $num;
}
?>
答案 3 :(得分:2)
或使用for循环
$num = 1;
for($i=5; $i<= count($temp_row), $i++) {
echo $num;
$num++;
}
答案 4 :(得分:1)
试试这段代码:
$new_temp_row = array_slice($temp_row, 5);
foreach($new_temp_row as $key => $value) {
echo $value;
}
答案 5 :(得分:0)
$i = 1;
foreach ($temp_row as $key => $value) {
if (($num = $i++) < 6) continue;
// Do something
}
或者
for ($i = 0; $i < 5; $i++) next($temp_row);
while(list($key, $value) = each($temp_row)) {
// Do something
}
答案 6 :(得分:0)
我建议您使用for for look而不是a。然后,您可以访问循环中i位置的键和值。
<?php
$num = 1;
$keys = array_keys( $temp_row );
for( $i = 5; $i < count( $temp_row ); $i++ ) {
$key = $keys[$i];
$val = $temp_row[$i];
echo $i;
}
?>
答案 7 :(得分:0)
您可以使用原始数组的所需数据部分创建新数组并使用它:
$process = array_slice ($temp_row, 5);
foreach($process as $key => $value) {
//TODO Your logic
}
或者你可以跳过第一个siel元素:
<?php
$num=1;
foreach($temp_row as $key => $value) {
if ($num < 6) {
$num++;
continue;
}
//TODO Your logic
}
?>