Parantatatam
mag Cookies & Kekse
Hallo,
ich habe seit einiger Zeit mal wieder eine Frage an euch. Diesmal geht es mir darum, dass ich eine rekursive Funktion habe. Leider muss die Funktion sich über eine Foreach-Schleife immer wieder selber aufrufen, was doch sehr belasten wird, wenn die Größe meiner Arrays steigt. Vielleicht gibt es da so etwas wie array_map oder array_walk (was nicht funktioniert!).
Das ist mein Skript (wichtiger Teil ist mit entsprechenden Kommentaren gekennzeichnet (22. - 24.)):
Was will ich mit dieser Funktion erreichen? Nun, da trim nicht wirklich funktioniert und nur auf Zeichenketten angewandt werden kann, habe ich mir eine Funktion geschrieben, welche sowohl aus Zeichenkette als auch Werten in einem Array (welche Zeichenketten sind) die Leerzeichen entfernen kann (Anfang, Ende und zwischendurch immer nur eins).
PS: Ich rufe in der Funktion eine Funktion namens space auf. Diese kann ignoriert werden, da sie nur dafür da ist die leeren Arraywerte zu löschen.
ich habe seit einiger Zeit mal wieder eine Frage an euch. Diesmal geht es mir darum, dass ich eine rekursive Funktion habe. Leider muss die Funktion sich über eine Foreach-Schleife immer wieder selber aufrufen, was doch sehr belasten wird, wenn die Größe meiner Arrays steigt. Vielleicht gibt es da so etwas wie array_map oder array_walk (was nicht funktioniert!).
Das ist mein Skript (wichtiger Teil ist mit entsprechenden Kommentaren gekennzeichnet (22. - 24.)):
PHP:
<?php
function trimmer($value) {
// Wenn der uebergebene Wert eine Zeichenkette ist
if(is_string($value)) {
// Zeichenkette anhand der Leerzeichen auftrennen => Array
$value = explode(' ', $value);
// Leere Arraywerte loeschen
$value = array_filter($value, 'space');
// Array anhand der Leerzeichen zu einer Zeichenkette zusammenfuegen
$value = implode(' ', $value);
// Ausgabe der Zeichenkette
return $value;
}
// Wenn der uebergebene Wert ein Array ist
elseif(is_array($value)) {
// ======= SOLL veraendert werden
foreach($value as $var) {
$new[] = trimmer($var);
}
// ================================
// Ausgabe des Arrays
return $new;
}
// Wenn der uebergebene Wert weder eine Zeichenkette noch ein Array ist
return $value;
}
// Anwendung
var_dump(trimmer(array(' 24 23 ', array(' 88 2323 23 ', array(' asd 23 2323 2323 ', 'asdasd 23 23 # ', 2323, TRUE)))));
?>
Was will ich mit dieser Funktion erreichen? Nun, da trim nicht wirklich funktioniert und nur auf Zeichenketten angewandt werden kann, habe ich mir eine Funktion geschrieben, welche sowohl aus Zeichenkette als auch Werten in einem Array (welche Zeichenketten sind) die Leerzeichen entfernen kann (Anfang, Ende und zwischendurch immer nur eins).
PS: Ich rufe in der Funktion eine Funktion namens space auf. Diese kann ignoriert werden, da sie nur dafür da ist die leeren Arraywerte zu löschen.