Hallo,
hier ein Beispiel für array-reindex:
<?php ### array_index ###$feld=array();
$feld[1]="Eins";
$feld[4]="Vier";
$feld[77]="Siebenundsiebzig";echo "<pre>";
print_r($feld);
echo "</pre>";array_splice($feld,0,0);
echo "<pre>";
print_r($feld);
echo "</pre>";?>
Idee... wäre es schneller das von einer foreach-Schleife mit "selbstindizierung" machen zu lassen? etwa so:
$array[97] = "q";
$array[98] = "blah";
$array[27354] = "muh";
foreach($array as $wert)
{
global $neuarray[] = $wert;
}
$array = $neuarray;
echo "<pre>";
print_r($array);
echo "</pre>";
Nein. Das wäre garantiert langsamer. PHP ist eine Interpreter-Sprache. Die Verwendung einer fertigen Funktion ist der einer in der Interpretersprache geschriebenen auf jeden Fall vorzuziehen. Es ist zu vermuten, dass die Displacements für die Speicherstrukturen der "Arrays" in der fertigen PHP-Funktion natürlich compiliert sind und nicht erst interpreteiert werden müssen. Sie benötigen daher nur etwa 1/600 der Taktzyklen.
Außerdem funktioniert foreach in älteren PHP-Versionen (vor 4.2.x) noch nicht fehlerfrei, bei 4.0.4 (wie du ja weißt) weigeret es sich, die üblichen regeln für globale Variablen anzuerkennen.
Grüße
Tom