Problem mit foreach Schleife und Funktion

Katzehuhn

Erfahrenes Mitglied
Ich hab folgende Schleife und Funktion:
PHP:
function get_info(){
global $a;
foreach($a as $i => &$ai){
.....
}
}
foreach($a as $i => &$ai){
.....
if(irgndwas){
get_info();
}
}

Warum bricht er mir die Schleife (außerhalb der funktion) ab? Kann ich dies irgend wie umgehen ohne das gesamte Array kopieren zu müssen?
Edit: Liegt wohl daran weil der Interne Zeiger des Arrays am Schluss schon einmal Fertig durchgelaufen ist. Kann man den net auf ignorieren Stellen? Irgnd wie sind die Arrays in PHP einwenig dumm durchdacht..
 
Zuletzt bearbeitet:
Naja wenn das Array ziemlich groß is und ich außerdem am Original arbeiten möchte bleibt mir nur diese Lösung.
 
Hallo,

arbeitest du mit einem Array mit numerischen Indizes? Denn dann könntest du auch mit einem eigenen Zähler das Array durchlaufen – was noch dazu schneller sein sollte (glaube mich da an gewisse Benchmarks zu erinnern, aber ich würd jetzt nicht meine Hand dafür in's Feuer legen).

Etwa so:
PHP:
$elements = count($a);
for ($i = 0; $i < $elements; ++$i) {
…
}

Mit globalen Variablen zu arbeiten ist übrigens nicht sehr schön. Du kannst dein Array auch via Referenz übergeben.

Grüße,
Matthias
 
Sind numerische Indexes, aber nicht in aufsteigender Reihenfolge(hat ich davor schon mal, ist wirklich einwenig schneller, aber auch nicht wesentlich). Arrays sind mir trotzdem einwenig suspekt. Naja trotzdem danke für die Hilfe.
 
Zurück