1. PHP5 Snippet: Mehrdimensionale Arrays zu eindimensionalen Arrays

    Stefan · 15.10.08, 18:30 Uhr · PHP · Tags: ,

    Man braucht immer mal wieder so kleine Helfer in Projekten, da diese eigentlich nützlichen Funktionen in PHP nicht integriert sind. Heute: Wie erzeuge ich aus einem mehrdimensionalen Array einen einfachen eindimensionalen Array der die Inhalte eines bestimmten Array Keys enthält:

    Die Funktion ist folgende (nur PHP5+):

    /**
     * get an array of found items by a given keyname
     * 
     * method flats a given multi dimensional array into 
     * a one dimensional array
     *
     * @param mixed $needle   string/integer keyname for search, null for complete flatt
     * @param array $haystack array for search
     * @return array found items
     */
    function flatArray($needle = null, $haystack = array())
    {
        $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($haystack));
        $elements = array();
        
        foreach($iterator as $element) {    
            
            if(is_null($needle) || $iterator->key() == $needle) {
                $elements[] = $element;
            }
        }
        
        return $elements;
    }

    Die funktion erzeugt aus folgendem Array:

    Array
    (
        [0] => Array
            (
                [id] => 12
                [name] => element 1
            )
    
        [1] => Array
            (
                [id] => 13
                [name] => element 2
            )
    
        [2] => Array
            (
                [id] => 14
                [name] => element 3
            )
    
    )

    unter verwendung dieses Befehlsraufrufs:

    $neuerArray = flatArray('name', $array);

    einen neuen Array nur mit den Werten des Keys name:

    Array
    (
        [0] => element 1
        [1] => element 2
        [2] => element 3
    )

    Ein netter Zusatz: Übergibt man als $needle das reservierte Wort null erhält man einen eindimensionalen Array mit allen Werten des mehrdimensionalen Arrays als Inhalt.

  2. Kommentare

    1. Anonymous · 28.11.08, 15:31 Uhr

      PERFEKT! Danke, diese Funktion rettet mir das Leben

    2. array unique - Seite 2 - php.de · 17.02.09, 11:23 Uhr

      […] denn keiner ne idee wie ich das lösen könnte? was ich suche ist genau das hier nur eben für php4. php5 kommt für mich nicht in frage da ich sonst das komplette script […]

  3. Kommentar schreiben

    XHTML: Du kannst diese Tags nutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Gehe zur polyCODER Startseite