[Variablen] Array Umstricken

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

  • [Variablen] Array Umstricken

    Hallo,

    ich arbeite gerade mit Ajax und im Script vergebe ich ID

    zb. $var="APP_1_2_3_4_5";

    In php bräuchte ich ein n stufiges Array daraus.

    d.h.

    $DATA["APP"][1][2][3][4][5]....=1;

    mit der splitfunction komme ich auf

    $varsplit=split("_",$var)

    $varsplit[0]="APP";
    $varsplit[1]="1";
    $varsplit[2]="2";
    $varsplit[3]="3";
    $varsplit[4]="4";
    $varsplit[5]="5";


    wie gesagt der string könnte auch viel länger sein.

    Wie komme ich zu einer Variablen ??
    $DATA["APP"][1][2][3][4][5]....=1;



    danke schonmal.

    gruss
    Thomas

  • #2
    Wenn du im Handbuch sonst nix gefunden hast (ich hab gerade keine Zeit zu suchen), wirst du vermutlich eine foreach-schleife benutzen müßen und auch die values mitbenutzen müßen. Diese setzt du dann als neuen Index.
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Re: [Variablen] Array Umstricken

      Erzeuge dir zu jedem Wert ein neues Unter-Array mit dem entsprechenden Key.

      PHP-Code:
      $var="APP_1_2_3_4_5";

      $x explode('_'$var);

      $a = array();
      $b = &$a;

      foreach(
      $x as $y) {
          
      $b[$y] = array();
          
      $b = &$b[$y];
      }
      $b 1;

      print_r($a); 
      Und nutze um Himmels willen nicht split, wenn du keine regulären Ausdrücke zum Aufteilen benötigst, sondern explode.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Hallo wahsaga,

        die Idee ist gut, und funktioniert auch.

        Nur was ich leider nicht erwähnt hatte ist folgendes.

        $var="APP_1_2_3_4_5"; // ist eine value was beim click auf einem Ordner(img) in ein Hidden Feld geschrieben wird. Per Post wird die Sache geschickt und dann soll diese Variable im PHP von auf/zu oder zu/auf gesetzt werden.

        Soll mehr oder weniger den Status eines Ordners wiederspiegeln.

        d.h.

        APP
        1
        2
        3
        4
        5


        d.h. ich will in der Session diese neu generierte Variable abspeichern und aber die alten Session variablen nicht überschreiben.(alter status muss erhalten bleiben)

        $_SESSION["MENU"]=$a;

        Wenn ich aber am Anfang des codes:

        statt:
        $a = array();

        diese mache.
        $a =$_SESSION["MENU"];


        Um den letzten Status zu speichern würde ich
        $b=!$b; machen um den status "Order Offen" bzw. "Ordner Zu"

        Wird immer nur die letzte neu generierte Variable in der Session gespeichert.

        Hast ne Idee wie ich das umgehen kann ? bzw wie ich das anders machen könnte ?


        gruss Thomas

        Kommentar


        • #5
          Original geschrieben von thomy76
          Nur was ich leider nicht erwähnt hatte [...]
          War ja mal wieder fast klar, dass da noch was kommt ...

          $var="APP_1_2_3_4_5"; // ist eine value was beim click auf einem Ordner(img) in ein Hidden Feld geschrieben wird. Per Post wird die Sache geschickt und dann soll diese Variable im PHP von auf/zu oder zu/auf gesetzt werden.

          Soll mehr oder weniger den Status eines Ordners wiederspiegeln.
          Das übrige Kauderwelsch habe ich kaum noch verstanden ...

          Aber wenn dir diese Art der Wertübermittlung solche Probleme macht - warum wählst du dann nicht eine andere (und vermutlich vernünftigere)?
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Hallo nochmal,


            naja, hab schon eine einfache variante, wollte die aber nun verbessern.
            Es gibt nur fünf feste Stufen, wollte aber eine variante finden die "Stufenlos" ist und evtl den Code allgemein gestaltet.


            $_POST["ACTION"]="APP_1_2_3_4";

            $aElement=explode("_",$_POST["ACTION"]);

            $aData=$_SESSION["MENU"];
            switch(sizeof($aElement))
            {
            case 1:
            $aData[$aElement[0]]["OPEN"]=!$aData[$aElement[0]]["OPEN"];
            break;
            case 2:
            $aData[$aElement[0]][$aElement[1]]["OPEN"]=!$aData[$aElement[0]][$aElement[1]]["OPEN"];
            break;
            case 3:
            $aData[$aElement[0]][$aElement[1]][$aElement[2]]["OPEN"]=!$aData[$aElement[0]][$aElement[1]][$aElement[2]]["OPEN"];
            break;
            case 4:
            $aData[$aElement[0]][$aElement[1]][$aElement[2]][$aElement[3]]["OPEN"]=!$aData[$aElement[0]][$aElement[1]][$aElement[2]][$aElement[3]]["OPEN"];
            break;
            case 5:
            $aData[$aElement[0]][$aElement[1]][$aElement[2]][$aElement[3]][$aElement[4]]["OPEN"]=!$aData[$aElement[0]][$aElement[1]][$aElement[2]][$aElement[3]][$aElement[4]]["OPEN"];
            break;
            }

            $_SESSION["MENU"]=$aData;

            naja, vielleicht hat ja noch jemand ne treffende idee ;-)

            Kommentar

            Lädt...
            X