Webstatt.org - Community seit 2006 - 2012 (2024?)

Array inhalt Löschen?!

Avatar user-259
09.04.2008 12: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! lächeln

Gruß

[font=courier]H[/font]amburger [font=courier]J[/font]ung
Avatar user-259
09.04.2008 14:42

Hat sich erledigt !!! Fettes Grinsen

Ich werde es nun anders machen lächeln

Gruß

[font=courier]H[/font]amburger [font=courier]J[/font]ung
user-152
13.04.2008 15:00

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

Avatar user-271
13.04.2008 18: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?

#!/bin/bash
traurig){ neutral:& };: