elemente in einem array löschen
Ilja
- php
0 romy0 Ilja0 romy
0 Thomas Schmieder
0 Auge
hi,
ich habe ein einfaches array zum beispeil in folgender form:
$feld[0]=wert1;
$feld[1]=wert2;
$feld[2]=wert3;
$feld[3]=wert4;
$feld[4]=wert5;
mein problem ist nun, dass ich gerne ein bestimmtes element innerhalb des arrays löschen will, zum beispiel das element $feld[3]. ich habe aber nur funktionen gefunden, die das erste oder letzte element aus einem feld löschen. hat jemand eine idee, ausser vielleicht das element an die letzte stelle zu rücken und dann zu löschen ?
Ilja
hi,
ich habe ein einfaches array zum beispeil in folgender form:
$feld[0]=wert1;
$feld[1]=wert2;
$feld[2]=wert3;
$feld[3]=wert4;
$feld[4]=wert5;mein problem ist nun, dass ich gerne ein bestimmtes element innerhalb des arrays löschen will, zum beispiel das element $feld[3]. ich habe aber nur funktionen gefunden, die das erste oder letzte element aus einem feld löschen. hat jemand eine idee, ausser vielleicht das element an die letzte stelle zu rücken und dann zu löschen ?
so vielleicht:
weiss nicht ob die arrayübergaben stimmen, aber es muss ja auch sicherlich keine Funktion sein!?
$i ist die stelle wo gelöscht werden soll
function loeschen($feld, $i) {
for($j=$i; $j<(count($feld)-1); $j++) {
$feld[$j] = $feld[$j+1];
}
return $feld;
}
Ilja
hih
hi romy,
so vielleicht:
weiss nicht ob die arrayübergaben stimmen, aber es muss ja auch sicherlich keine Funktion sein!?
$i ist die stelle wo gelöscht werden sollfunction loeschen($feld, $i) {
for($j=$i; $j<(count($feld)-1); $j++) {
$feld[$j] = $feld[$j+1];}
return $feld;}
ich kann nicht erkennen, wie bei deiner funktion das $i-element aus einem feld gelöscht wird. wenn zum beispiel $i=3 ist und das feld aus 4 elementen besteht, geht es doch gar nicht erst in die schleife rein ?
Ilja
hi romy,
so vielleicht:
weiss nicht ob die arrayübergaben stimmen, aber es muss ja auch sicherlich keine Funktion sein!?
$i ist die stelle wo gelöscht werden sollfunction loeschen($feld, $i) {
for($j=$i; $j<(count($feld)-1); $j++) {
$feld[$j] = $feld[$j+1];}
return $feld;}
ich kann nicht erkennen, wie bei deiner funktion das $i-element aus einem feld gelöscht wird. wenn zum beispiel $i=3 ist und das feld aus 4 elementen besteht, geht es doch gar nicht erst in die schleife rein ?
das ist wahr, sorry, wollte es sauber machen
function loeschen($feld, $i) {
for($j=$i; $j<=count($feld); $j++) {
if($feld[$j+1]) {
$feld[$j] = $feld[$j+1];
}
}
return $feld;
}
das Problem ist, wenn es $j+1 nicht gibt, weil es ja schon ausserhalb ist
hatte nicht mitgedacht und wollte es so wie oben lösen
also muss noch ne if-Abfrage rein, aht aber immernoch das Problem, dass es auch bei 0 abbricht, naja
nimm wohl besser das andere Angebot, ich habe glaube ich gerade selber ein Brett vorm kopf man müsste prüfen können ob es die Arraystelle überhaupt gibt
tut mir leid, wenn ich dir nicht helfen konnte
ciao
romy
Ilja
Hallo,
ich habe ein einfaches array zum beispeil in folgender form:
$feld[0]=wert1;
$feld[1]=wert2;
$feld[2]=wert3;
$feld[3]=wert4;
$feld[4]=wert5;mein problem ist nun, dass ich gerne ein bestimmtes element innerhalb des arrays löschen will,
Das geht ganz einfach mit unset($feld[3]);
Danach sieht Dein Array dann so aus:
$feld[0]=wert1;
$feld[1]=wert2;
$feld[2]=wert3;
$feld[4]=wert5;
Wenn Du jetzt $feld[3]="neuer Wert"; schreibst, dann wird das neue alte Element hinten angehängt:
$feld[0]=wert1;
$feld[1]=wert2;
$feld[2]=wert3;
$feld[4]=wert5;
$feld[3]="neuer Wert";
Das kannst du testen mit
foreach($feld as $zeile){ echo $zeile }
Grüße
Tom
Hallo
ich habe ein einfaches array zum beispeil in folgender form:
$feld[0]=wert1;
$feld[1]=wert2;
$feld[2]=wert3;
$feld[3]=wert4;
$feld[4]=wert5;mein problem ist nun, dass ich gerne ein bestimmtes element innerhalb des arrays löschen will, zum beispiel das element $feld[3]. ich habe aber nur funktionen gefunden, die das erste oder letzte element aus einem feld löschen. hat jemand eine idee, ausser vielleicht das element an die letzte stelle zu rücken und dann zu löschen ?
Ilja
Neben den anderen, genannten Möglichkeiten wäre da noch
array_splice($feld,$i,1);
wobei $i die Nummer des Arrayindexes ist.
So könntest du auch den Inhalt des Elementes gegen einen
anderen Inhalt austauschen.
http://www.php.net/manual/de/function.array-splice.php
http://www.selfphp.info/funktionsreferenz/array_funktionen/array_splice.php
Tschö, Auge