Sandra2000: array, einzelne Arrays löschen, wenn kleiner als 5 Buchstaben

Ich würde gerne aus meinem Array alle Einträge löschen die weniger als 5 Buchstaben haben.

Sandra

  1. Hello,

    Ich würde gerne aus meinem Array alle Einträge löschen die weniger als 5 Buchstaben haben.

    Na, dann tu's doch ;-)

    Schleife durch das Array

    http://de3.php.net/manual/en/control-structures.foreach.php

    foreach ($_my_array as $key => $value)
    {
        ## gucken, ob das Element vom Typ String ist
        ## http://de3.php.net/manual/en/function.is-string.php
        if (is_string($value))
        {
            ## prüfen, ob die Anzahl der Zeichen < 5 ist
            ## http://de3.php.net/manual/en/function.strlen.php
            ## hier eventuell die Multibyte-Funktion verwenden, wenn UTF-8 o.ä. benutzt wird
            if (strlen($value) < 5))
            {
                ## Element im Original-Array löschen
                unset($_my_array[$key]);
            }
        }
    }

    Foreach arbeitet intern mit einer Kopie des Arrays, sodass Du dir keine Gedanken um das Aufrücken in der Kette machen musst. Um aber das Element zu löschen, hat es daher auch keinen Sinn, unset($value) zu schreiben, sondern es ist der Zugriff über den Schlüssel auf das Originalarray notwendig.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. FAIL :)

      Na, dann tu's doch ;-)

      Aber bitte mit der dafür vorgesehenen Funktion: array_filter

      1. Aber bitte mit der dafür vorgesehenen Funktion: array_filter

        Nachtrag: wenn das Array selbst geändert werden soll (und nicht nur die Ausgabe) ist natürlich array_walk vorzuziehen.

          1. EPIC FAIL? :)

            Eher ein "EPIC FAIL"-FAIL :p

    2. (Hallo|Hi(ho)|Nabend) Tom,

      ## gucken, ob das Element vom Typ String ist
          ## http://de3.php.net/manual/en/function.is-string.php
          if (is_string($value))
          {
              ## prüfen, ob die Anzahl der Zeichen < 5 ist
              ## http://de3.php.net/manual/en/function.strlen.php
              ## hier eventuell die Multibyte-Funktion verwenden, wenn UTF-8 o.ä. benutzt wird
              if (strlen($value) < 5))
              {
                  ...
              }
          }

      Wie wärs stattdessen mit:

        
      if (preg_match('/\A.{0,4}\z/su', $value)) {  
          ...  
      }  
      
      

      Das deckt 8-Bit und UTF-8 ab.
      "Nicht-Strings" werden ignoriert, bis auf Zahlen.
      Die werden als Zeichenketten interpretiert, was aber nicht unerwünscht sein muss.

      MffG
      EisFuX