Willkommen in der Webstatt Zum Webstatt Blog und Stories
Morit2 Morit2 am 09.04.08 14:46

Hallo,
Ich möchste gerne aus folgendem Array alle einträge mit Buchstaben löschen.

$array = array(array(1, a, 2, b, 4, 25, s, z), array(3, c, 4, d, g), array(5, e, 6,f));

Ich habe folgendes Programmiert:
for( $i=0; $i<count($array); $i++){
for( $x=0; $x<count($array[$i]); $x++){
if(preg_match("/\D+/", $array[$i][$x])){
array_splice($array[$i], $x, 1);
}
}
}


Das Problem wird man ganz schnell sehen wenn man das Script ausführt.
Man hat das Problem das es, wenn man zwei buchstaben am ende stehende hat, dass das letzte nicht gelöscht wird! warum? keine ahnung! :)

Gruß

netcup.de Warum gibt es hier Werbung?
Morit2 Morit2 am 09.04.08 16:42

Hat sich erledigt !!! :D

Ich werde es nun anders machen :)

Gruß

CIX88 am 13.04.08 17:00

Schau dir array_walk an, und schreibe einfach eine Funktion - fertig.

nuit nuit am 13.04.08 20:50

array_walk braucht man nichtmal
die sache ist, dass array_splice das element rauslöscht und dann rutsch das ganze ja um 1 Element zusammen...demnach überspringt dir eine for schleife immer 1 element beim rauslöschen....um das zu umgehen, musst du ein -1 einbauen ^^
sieht dann so aus:
$array = array(1,'ab','v','2','12','c',3,7);

for($i = 0; $i < count($array); $i++) {
if(!is_numeric($array[$i])) {
array_splice($array,$i,1);
--$i;
}
}
print_r($array);

die sache ist, wie willst du das mit array_walk lösen? weil du kannst das element da raus ja nicht löschen? oder geht das irgendwie?

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt