Ankündigung

Einklappen
Keine Ankündigung bisher.

Inhalt eines Multidimensionalen Arrays ausgeben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Inhalt eines Multidimensionalen Arrays ausgeben

    Ich komm leider mit den Anleitungen im Netz nicht klar die ich finden kann, wäre um jede Hilfe froh. Ich möchte grundsätzlich nur die Texte ausgeben lassen. Ich wollte das zuerst mal mit Echo z.B machen und (noch) nicht mit einer Schleife.

    PHP-Code:
      return array(     => array(         'text' => 'H1''href' => '/de/pfad',         'children' => array(             => array(                 'text' => 'H2',                 'children' => array(                     array('text' => 'Punkt1''href' => '/de/pfadpkte'),                     array('text' => 'Punkt2''href' => '/de/pfadpkte')                 )             ),             => array(                 'text' => 'Anderer H2',                 'children' => array(                     => array('text' => 'Mehr Punkte''href' => '/de/pfadpkte'),                     => array('text' => 'Mehr Punkte''href' => '/de/pfadpkte')                 )             )         )     ) ); 
    Sollte im besten Fall so aussehen dann:
    H1
    H2
    Punkt1
    Punkt2

    Anderer H2
    Mehr Punkte
    Mehr Punkte

    Beste Grüsse
    Nemain

  • #2
    Formatier bitte den Code vernünftig das man das auch lesen kann und nicht alles in einer Zeile ist.

    Hier unten ein Beispiel, wie du auf die Werte generell zugreifen kannst.

    PHP-Code:
    $a = [
        
    => [
            
    'text' => 'H1',
            
    'href' => '/de/pfad',
            
    'children' => [
                
    => [
                    
    'text' => 'H2',
                    
    'children' => [
                        [
                            
    'text' => 'Punkt1',
                            
    'href' => '/de/pfadpkte'
                        
    ] ,
                        [
                            
    'text' => 'Punkt2',
                            
    'href' => '/de/pfadpkte'
                        
    ]
                    ]
                ] ,
                
    => [
                    
    'text' => 'Anderer H2',
                    
    'children' => [
                        
    => [
                            
    'text' => 'Mehr Punkte',
                            
    'href' => '/de/pfadpkte'
                        
    ] ,
                        
    => [
                            
    'text' => 'Mehr Punkte',
                            
    'href' => '/de/pfadpkte'
                        
    ]
                    ]
                ]
            ]
        ]
    ];

    echo 
    $a[0]['text']; // H1
    echo $a[0]['children'][0]['text']; // H2
    echo $a[0]['children'][0]['children'][0]['text']; // Punkt1 
    EDIT: Wenn du dir generell mit print_r() das Array ausgeben lässt, kannst du die Struktur besser sehen als hier in der Definition.

    Für das Array oben:

    PHP-Code:
    print_r($a);
    /*
    Array
    (
        [0] => Array
            (
                [text] => H1
                [href] => /de/pfad
                [children] => Array
                    (
                        [0] => Array
                            (
                                [text] => H2
                                [children] => Array
                                    (
                                        [0] => Array
                                            (
                                                [text] => Punkt1
                                                [href] => /de/pfadpkte
                                            )

                                        [1] => Array
                                            (
                                                [text] => Punkt2
                                                [href] => /de/pfadpkte
                                            )

                                    )

                            )

                        [1] => Array
                            (
                                [text] => Anderer H2
                                [children] => Array
                                    (
                                        [0] => Array
                                            (
                                                [text] => Mehr Punkte
                                                [href] => /de/pfadpkte
                                            )

                                        [1] => Array
                                            (
                                                [text] => Mehr Punkte
                                                [href] => /de/pfadpkte
                                            )

                                    )

                            )

                    )

            )

    )
    */ 
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Noch ein Tipp mit der FOREACH SCHLEIFE kannst du alle Inhalte des Arrays einzeln ausgeben lassen.

      Kommentar


      • #4
        Vielen Dank für die Antworten! Ich weiss nicht, warum es den Code auf eine einzelne Zeile genommen hat. Bei mir im PhpStorm ist es richtig formatiert. Hat mir sehr geholfen, danke sehr. @chim: Yes, ich weiss dass das geht, nur wollte ich es zuerst mit echo machen und noch nicht mit einer Schleife

        Kommentar


        • #5
          So wie ich das sehe, möchte er alle Elemente mit dem Schlüssel 'text' einsammeln. Diese kleine Funktion erledigt solche Aufgaben:
          PHP-Code:
          /**
          * Get all values of a multidimensional array, optional from given key
          *
          * @param $arr array
          * @param $key string|int
          * @return array
          */
          function array_values_recursive(array $arr$key null){
              
          $val = array();
              
          array_walk_recursive($arr, function($v$k) use($key, &$val){
                  if(
          $k == $key or $key === null$val[] = $v;
              });
              return 
          $val;

          Beispiel:
          PHP-Code:
          //$a das Array
          $result array_values_recursive($a'text');

          debug::write($result);  //debug s. signatur 
          Ausgabe:
          Code:
          array (
            0 => "H1",
            1 => "H2",
            2 => "Punkt1",
            3 => "Punkt2",
            4 => "Anderer H2",
            5 => "Mehr Punkte",
            6 => "Mehr Punkte",
          )
          LG jspit

          Kommentar

          Lädt...
          X