array_clean()
Horst Seehofer
- php
Hallo!
Ich suche eine Funktion die array_clean() heissen könnte wenn es sie gäbe :-)
Ursprünglich war ich auf der Suche ein array auf empty() zu prüfen, aber schon array(""); ist nicht empty!
<?
//function array_clean(){}
$array1 = array_clean(array("","",""));
$array2 = array_clean(array("",array("",""),""));
$array3 = array_clean(array("","1",""));
$array4 = array_clean(array("",array("","1"),""));
?>
Ich suche nun nach einer Funktion die mir alle leeren Werte aus Arrays und gar leere arrays ganz rausschmeißt.
1&2 zB soll beim prüfen von if(empty(array)) = true ergeben
3&4 nicht.
Ich bin mit meinem latein am ende.
MfG Horst Seehofer
Hallo!
Ich suche eine Funktion die array_clean() heissen könnte wenn es sie gäbe :-)
Ob es etwas php internes jetzt gibt bin ich mir nicht sicher,Rekursion mit str_len abfrage funktioniert aber sicher.
lg
Hi!
Ich suche eine Funktion die array_clean() heissen könnte wenn es sie gäbe :-)
Ob es etwas php internes jetzt gibt bin ich mir nicht sicher,
IMHO - auch nach Recherche - nein!
Rekursion
oder Iteration über alle Elemente z.B.:
mit str_len abfrage funktioniert aber sicher.
Aber sicher, das!
off:PP
Rekursion
oder Iteration über alle Elemente
Mal eine Interessensfrage. Mat welcher Funktion iterierst du über alle Elemente inkl sub Arrays ohne Rekursion anzuwenden? Da kenn ich doch glatt eine Funktion nicht.. hätte ich noch aber auch noch nie gebraucht ;)
lg
Hi!
Rekursion
oder Iteration über alle Elemente
Mal eine Interessensfrage. Mat welcher Funktion iterierst du über alle Elemente
In PHP? Mit foreach - wenn Element wiederum ein Array ist: mit foreach;)
Sorry, mein Fehler!
Du hast natürlich recht - und ich war vorhin zuwenig aufmerksam:
das beschriebene Problem schreit nach Rekursion!
Alles andere wäre Unsinn!
off:PP
Rekursion
oder Iteration über alle Elemente
Mal eine Interessensfrage. Mat welcher Funktion iterierst du über alle Elemente
In PHP? Mit foreach - wenn Element wiederum ein Array ist: mit foreach;)
Sorry, mein Fehler!
Du hast natürlich recht -
*hihi*... jetzt bin ich aber fast enttäuscht, ich hab mich schon auf etwas neues gefreut.. php wird ja mit der Zeit langweilig ;)
lg
Hi bajuvarischer Ministerpräsi!
Dein Nick hätte fast eine Antwort meinerseits verhindert - das nur als Randnotiz;)
Ich suche eine Funktion die array_clean() heissen könnte wenn es sie gäbe :-)
Was soll sie denn tun?
Ursprünglich war ich auf der Suche ein array auf empty() zu prüfen, aber schon array(""); ist nicht empty!
Natürlich nicht, denn dieses Array enthält ein Element und ist somit nicht leer - auch count wird Dir das bestätigen und wohl ein (int) 1 anzeigen.
Das erste Element dieses Array hat den boolschen Wert false- ist aber nicht (==||===) null. Es enthält eine leere Zeichenkette.
<?
//function array_clean(){}
$array1 = array_clean(array("","",""));
$array2 = array_clean(array("",array("",""),""));
$array3 = array_clean(array("","1",""));
$array4 = array_clean(array("",array("","1"),""));
?>Ich suche nun nach einer Funktion die mir alle leeren Werte aus Arrays und gar leere arrays ganz rausschmeißt.
"Rausschmeißt", oder anzeigt welche es sind? Da Deine Funktion clean heissen soll, gehe ich mal von ersterem aus.
1&2 zB soll beim prüfen von if(empty(array)) = true ergeben
if(empty(array)) == true //oder: === true, oder?
Da wirst Du eine Iteration benötigen: Du kannst z.B: mit array_walk arbeiten, oder mit foreach über das Array iterieren.
Du solltest dann beim Durchlauf prüfen, ob das aktuelle Element ein Array ist und ggf. die Elemente löschen, welche leer sind.
off:PP
Da wirst Du eine Iteration benötigen: Du kannst z.B: mit array_walk arbeiten, oder mit foreach über das Array iterieren.
Ja soweit war ich auch schon, genau wie mit array_filter, aber bei der Umsetzung hapert es. Ich weis, dass ich Rekursiv die Funktion benutzen muss und entweder nach is_array() frage oder if(empty(...)) aber wie gehts dann weiter??
Hosrt
Wie gesagt ich bekomm das alleine nicht hin und array_filter ist nicht das richtige für diese Rekursive sache!
Hi!
Wie gesagt ich bekomm das alleine nicht hin und array_filter ist nicht das richtige für diese Rekursive sache!
array_filter() allein hilft leider nicht bei verschachtelten Arrays, denn wenn ein rekursiver Aufruf was anderes als ein zu false kompatiblen Wert liefert, wird nicht der ermittelte Wert genommen, sondern der originale beibehalten. Aber eine Kombination aus array_filter() und array_walk() hilft.
$array2 = array("",array("",""),"");
$array4 = array("",array("","1"),"");
function filter($test) {
if (is_array($test))
return array_filter(array_map('filter', $test));
return $test;
}
var_dump(array_filter(array_map('filter', $array2))); // leeres Array
var_dump(array_filter(array_map('filter', $array4))); // Array mit nicht-leeren Elementen
Lo!
Hi!
Ich suche nun nach einer Funktion die mir alle leeren Werte aus Arrays und gar leere arrays ganz rausschmeißt.
Lo!
Hi!
Ich suche nun nach einer Funktion die mir alle leeren Werte aus Arrays und gar leere arrays ganz rausschmeißt.
Danke soweit war ich auch schon mit google gekommen :-) aber ich verstehe nicht wie ich array_filter so anwende, dass er aus "" ein NULL also ein unset anwendet!?!?
Horst
Hi!
Ich suche nun nach einer Funktion die mir alle leeren Werte aus Arrays und gar leere arrays ganz rausschmeißt.
array_filter()
Danke soweit war ich auch schon mit google gekommen :-) aber ich verstehe nicht wie ich array_filter so anwende, dass er aus "" ein NULL also ein unset anwendet!?!?
Diese Funktion liefert ein Array zurück, in dem die Elemente nicht mehr enthalten sind, für die die Callback-Funktion ein false-kompatiblen Wert zurückliefert. Die Callback-Funktion ist optional, wenn es sich um nicht verschachtelte Arrays handelt. In deinem Fall müsstest du dir aber eine schreiben.
Lo!