Was wäre die effiziente Weise, jedes n-te Element aus einem großen Array auszuwählen? Gibt es eine "kluge" Art, dies zu tun, oder gibt es nur einen Looping?Auswählen jedes n-ten Elements aus einem Array
einige Punkte zu beachten:
- Das Array ist durchaus mit 130 000 Stück große
- I jedes 205. Element wählen haben
- Die Elemente numerisch nicht indiziert sind, wird so nicht funktionieren
for($i = 0; $i <= 130000; $i += 205)
Bisher ist dies die effizienteste Methode, die ich habe kommen mit:
$result = array();
$i = 0;
foreach($source as $value) {
if($i >= 205) {
$i = 0;
}
if($i == 0) {
$result[] = $value;
}
$i++;
}
Oder das gleiche mit Modulo:
$result = array();
$i = 0;
foreach($source as $value) {
if($i % 205 == 0) {
$result[] = $value;
}
$i++;
}
Diese Methoden können sehr langsam sein, ist es eine Möglichkeit, zu verbessern? Oder spalte ich hier nur Haare?
EDIT
Gute Antworten rundum mit der richtigen Erklärungen, versucht, die passendste als akzeptierte Antwort zu holen. Vielen Dank!
Das sieht vernünftig für mich aus - sind Sie sicher, dass Code Engpässe verursacht? Wenn nicht, profile es, um zu sehen! Wie lange dauert es? –
@Dominic, das ist nicht so sehr ein Flaschenhals, nur ein interessantes Problem, für das ich keine richtige Lösung finden konnte. Glauben Sie nicht, dass eine "richtige" Antwort mehr als einige Millisekunden Ausführungszeit einsparen würde, aber es wäre schön zu wissen. :) –