phpbar.de logo

Mailinglisten-Archive

[php] Array ausgeben, wie es angelegt wurde

[php] Array ausgeben, wie es angelegt wurde

Alexander Skwar php_(at)_phpcenter.de
Wed, 20 Mar 2002 16:13:21 +0100


»Christian Hamacher« sagte am 2002-03-19 um 20:25:09 +0100 :
> ich habe es einfach mal gemacht.
> Ist zwar noch nicht perfekt aber ab hier kannst du weiter machen.

Danke an alle!

In der Zwischenzeit hatte ich eine andere Lösung gefunden:

function js_array_generieren($array, $name, $prefix = array()){
  // Erzeuge eine Return Variable, die bei Funktionsaufrufen
  // nicht geleert wird
  static $return;
  // Wenn es keinen Prefix gibt, wird die Funktion (hoffentlich) das
  // erste Mal, also nicht rekursiv, aufgerufen
  // Lösche dann das Rückgabe Array
  if (0 == count($prefix)){
    $return = array();
  }

  // Durchlaufe das Übergebene Array
  foreach ($array as $key => $value){
    // Wenn der akt. Wert wieder ein Array ist, müssen wir in die
    // Funktion rein-rekursiv-en
    if (! is_array($value)){
      // Wenn es einen Prefix gibt, so sollte in diesem die vorhergehenden
      // Texte für die Ausgabe als Array stehen
      // Je nach dem, ob es einen Prefix gibt, muß der "Key" anders
      // erzeugt werden
      if (0 < count($prefix)){
        // Prefix vorhanden
        $k = sprintf ("%s%s[%s]", $name, implode('', $prefix), $key);
      } else {
        // Kein Prefix angegeben
        $k = sprintf ("%s[%s]", $name, $key);
      }
      // Kein Array.  Wert vorhanden und kann ausgegeben werden
      $return[$k] = $value;
    } else {
      // Value ist ein Array

      // Hänge den aktuellen Key an das Array mit den Prefixen an
      $prefix[] = sprintf('[%s]', $key);
      // Rekursiver Aufruf der Funktion.
      // Abbruchbedingung: $value ist kein Array
      js_array_generieren($value, $name, $prefix);
      // Das oberste Element des Prefix Arrays wird nicht mehr
      // benötigt -> Weg damit!
      array_pop($prefix);
    } /* if (! is_array($value)) */
  } /* von foreach ($array as $key => $value) */
  // Gebe zurück, was wir erzeugt haben
  return $return;
}

Alexander Skwar
--
How to quote:	http://learn.to/quote (german) http://quote.6x.to (english)
Homepage:	http://www.iso-top.de      |     Jabber: askwar_(at)_charente.de
   iso-top.de - Die günstige Art an Linux Distributionen zu kommen
                       Uptime: 3 days 4 hours 6 minutes


php::bar PHP Wiki   -   Listenarchive