Horst Seehofer: array_clean()

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

  1. 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

    1. 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

      --
      "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
      1. 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

        1. 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

          --
          "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
          1. 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

  2. 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

    --
    "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
    1. 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

      1. Wie gesagt ich bekomm das alleine nicht hin und array_filter ist nicht das richtige für diese Rekursive sache!

        1. 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!

  3. Hi!

    Ich suche nun nach einer Funktion die mir alle leeren Werte aus Arrays und gar leere arrays ganz rausschmeißt.

    array_filter()

    Lo!

    1. 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!?!?

      Horst

      1. 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!