array
alex
- php
Hallo,
mal schauen, ob mir jemand schnell mit meinem banalen problem weiterhelfen kann.
nach generieren eines arrays von gefilterten daten aus einer db habe ich folgendes vereinfachtes resultat:
Array ( [75] => xxx ; [79] => yyy )
kann ich den index in meinem ergebnisarray irgendwie wieder von "0" anfangen lassen? würde die "75" und "79" gern loswerden und einen neuen "reinen" array haben...
Danke Alex
das geht mit
reset(array);
hab jetzt mal direkt vor mein "print_r" ein "reset" gesetzt,
aber einen anderen index hab ich leider nicht...
Huhu Alex
mal schauen, ob mir jemand schnell mit meinem banalen problem weiterhelfen kann.
eine Lösung wäre
$arr_neu = array_values($arr_alt);
Viele Grüße
lulu
Hi lulu,
eine Lösung wäre
$arr_neu = array_values($arr_alt);
DANKE - das mit array_values war genau das was ich gesucht hatte!
Gruß Alex
Hi,
schau Dir mal die Funktionen array_slice() und array_splice() an. Besonders die zweite ist Dein Freund:
array_splice($arr,0,0);
müsste hoffentlich das leisten, was du brauchst.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo nochmal,
hier ein Beispiel:
<?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>";
?>
Liebe Grüße aus http://www.braunschweig.de
Tom
Hi Tom,
Spielkind... ;-)
hier ein Beispiel:
<?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>";
Fabian
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