nicht direkt mit einem foreach()
. Der Hinweis ist im each
Teil des Namens. Es durchläuft alle Elemente.
Also, wie können wir es erreichen?
Sie könnten immer eine if()
Klausel innerhalb der Schleife haben, die den Schlüsselwert prüft, bevor Sie den Rest der Arbeit erledigen.
Aber wenn das für Sie aus irgendeinem Grund nicht funktioniert, würde ich vorschlagen, eine FilterIterator
zu verwenden, um dies zu erreichen.
Die FilterIterator
ist eine Standard-PHP-Klasse, die Sie erweitern können, um Ihre eigenen Filter zu erstellen. Der Iterator kann dann unter Verwendung einer Standardschleife foreach()
geloopt werden, wobei nur die Datensätze aufgenommen werden, die vom Filter akzeptiert werden.
Es gibt einige Beispiele auf der Hilfeseite darüber verknüpft helfen, aber hier ist ein kurzes Beispiel ich zusammen für Sie geworfen haben:
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 />";
}
getestet; Ausgänge:
rec: 6 => 12
rec: 7 => 656
rec: 8 => 78
rec: 9 => 188
rec: 10 => 99
danke @Robert .. es hilft! – iamnards
Einfach und funktioniert :) Gern geschehen. – Robert