vLIB Einführung

vLIB Logo

14. Aufbau und Struktur eines LOOP-Arrays

Damit vlibTemplate einen LOOP ausgeben kann, muss ein LOOP-Array erzeugt werden, der eine bestimmte Struktur haben muss:

LOOP-Array in PHP
   $loop = array(
		0 => array('u_id' => 1, 'u_name' => 'Claus'),
		1 => array('u_id' => 2, 'u_name' => 'Kelvin'),
		2 => array('u_id' => 3, 'u_name' => 'Skrol'),
		3 => array('u_id' => 4, 'u_name' => 'Micheal')
	);

   echo '<pre>'; print_r($loop); echo '</pre>';

Der oben dargestellte Array hat genau die Struktur eines LOOP-Arrays. Mit print_r() lassen sich Arrays sehr übersichtlich ausgeben:

LOOP-Array: $loop
   Array
   (
       [0] => Array
           (
               [u_id] => 1
               [u_name] => Claus
           )
       [1] => Array
           (
               [u_id] => 2
               [u_name] => Kelvin
           )
       [2] => Array
           (
               [u_id] => 3
               [u_name] => Skrol
           )
       [3] => Array
           (
               [u_id] => 4
               [u_name] => Micheal
           )
   )

Dieses Array wird im Beispiel "loop.php" verwendet. Wie man deutlich sehen kann, handelt es sich um einen zweidimensionalen Array. Bei LOOP-Arrays ist eine Mischung aus Integer- und String-Indizes zwingend vorgeschrieben.
Jeder LOOP muss so aufgebaut werden, dass es sich um einen zweidimensionalen Array handelt, der über zwei Schlüsselfelder angesprochen wird:

Im Beispiel für den "basic_loop" könnte man ein Feld des LOOPS so ausgeben:
echo "Ein Name: {$loop[2][u_name]}";

Dieselbe Struktur gilt auch für verschachtelte LOOPS. Allerdings hat ein verschachtelter LOOP nicht 2 sondern 4, 6, 8 ... also eine gerade Anzahl von Dimensionen. Beispiel:

LOOP-Array: $outer
   Array
   (
       [0] => Array
           (
               [u_id] => 122
               [u_name] => jermyn
               [inner] => Array
                   (
                       [0] => Array
                           (
                               [p_id] => 1235
                               [p_post] => Hallo Claus und die anderen, die mitlesen.
                           )
                       [1] => Array
                           (
                               [p_id] => 1237
                               [p_post] => Hallo Coda, ich hab mir da mal eben dei
                           )
                       [2] => Array
                           (
                               [p_id] => 1238
                               [p_post] => Hallo Claus, ich hab mir die vLIB Templ
                           )
                       [3] => Array
                           (
                               [p_id] => 1243
                               [p_post] => Hallo Claus, ich sehe das ja genau so w
                           )
                   )
           )
       [1] => Array
               [u_id] => 119
               [u_name] => rehmaster
               [inner] => Array
                   (
                       [0] => Array
                           (
                               [p_id] => 1203
                               [p_post] => Ich habe folgendes Problem! Aus 2 MySQL Tabell
                           )
                       [1] => Array
                           (
                               [p_id] => 1205
                               [p_post] => Der kann die DB wohl nciht öffnen! Wäre n
                           )
                   )
           )
       [2] => Array
   ...
   )

Auch hier wird die strikte Mischung aus Integer- und String-Indizes eingehalten. Die Ausgabe könnte zum Beispiel mit echo "Ein Post von rehmaster: {$outer[1][inner][0][p_post]}"; erfolgen. Hinweis: Die Debug-Funktion von vlibTemplate zeigt immer einen Array mehr an, als es in Wirklichkeit ist:

vlibTemplateDebug: $loop
   Array
   (
      [loop] => Array
         (
             [0] => Array
                 (
                     [u_id] => 1
                     [u_name] => Claus
                     [__FIRST__] => 1
                     [__ODD__] => 1
                     [__ROWNUM__] => 1
                 )
             [1] => Array
                 (
                     [u_id] => 2
                     [u_name] => Kelvin
                     [__INNER__] => 1
                     [__EVEN__] => 1
                     [__ROWNUM__] => 2
                 )
   ...
   )

Hier steht 3x Array, obwohl es in Wirklichkeit nur 2 sind. Es kann sein, dass vLIB intern aus 2 dann 3 Dimensionen macht. Man braucht es für die Programmierung jedoch nicht zu beachten.
Wie man sehen kann, werden in jedem LOOP-Array Konstanten mitgeführt wie: __ODD__ und __ROWNUM__.

Zum Schluss die Arrays aller LOOP-Beispiele auf einen Blick:

db_simple.php
   Array
   (
       [0] => Array
           (
               [name] => Nordheimer, Ute
               [city] => Berlin
           )
       [1] => Array
           (
               [name] => Smith, Daniel
               [city] => Salt Lake City
           )
       [2] => Array
           (
               [name] => Pullu, Murath
               [city] => Kairo
           )
       [3] => Array
           (
               [name] => Leone, Gorgio
               [city] => Rom
           )
   )
db.php
   Array
   (
       [0] => Array
           (
               [name] => Nordheimer, Ute
               [birthday] => Samstag, 21.05.1960
               [city] => Berlin
           )
       [1] => Array
           (
               [name] => Smith, Daniel
               [birthday] => Dienstag, 22.06.1965
               [city] => Salt Lake City
           )
       [2] => Array
           (
               [name] => Pullu, Murath
               [birthday] => Donnerstag, 23.07.1970
               [city] => Kairo
           )
       [3] => Array
           (
               [name] => Leone, Gorgio
               [birthday] => Sonntag, 24.08.1975
               [city] => Rom
           )
   )
db_adv.php
  Array
  (
       [0] => Array
           (
               [colname] => name
           )
       [1] => Array
           (
               [colname] => birthday
           )
       [2] => Array
           (
               [colname] => city
           )
       [3] => Array
           (
               [colname] => country
           )
  )

  Array
  (
    [0] => Array
        (
            [row] => Array
                (
                    [0] => Array
                        (
                            [cell] => Nordheimer, Ute
                        )
                    [1] => Array
                        (
                            [cell] => 1960-05-21
                        )
                    [2] => Array
                        (
                            [cell] => Berlin
                        )
                    [3] => Array
                        (
                            [cell] => Deutschland
                        )
                )
        )
    [1] => Array
        (
            [row] => Array
                (
                    [0] => Array
                        (
                            [cell] => Smith, Daniel
                        )
                    [1] => Array
                        (
                            [cell] => 1965-06-22
                        )
                    [2] => Array
                        (
                            [cell] => Salt Lake City
                        )
                    [3] => Array
                        (
                            [cell] => USA
                        )
                )
        )
    [2] => Array
        (
            [row] => Array
                (
                    [0] => Array
                        (
                            [cell] => Pullu, Murath
                        )
                    [1] => Array
                        (
                            [cell] => 1970-07-23
                        )
                    [2] => Array
                        (
                            [cell] => Kairo
                        )
                    [3] => Array
                        (
                            [cell] => Ägypten
                        )
                )
        )
    [3] => Array
        (
            [row] => Array
                (
                    [0] => Array
                        (
                            [cell] => Leone, Gorgio
                        )
                    [1] => Array
                        (
                               [cell] => 1975-08-24
                        )
                    [2] => Array
                        (
                            [cell] => Rom
                        )
                    [3] => Array
                        (
                            [cell] => Italien
                        )
                )
        )
  )

Die Ausgaben wurden alle mit dem Befehl print_r() vorgenommen.