Arrays übergeben

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

  • Arrays übergeben

    Hi!

    Ich sitz jetz seit 2 Tagen rum und versuch verzweifelt rauszukriegen wie diese (sch...) arrays funktionieren.

    Um mir mal nen überblick über die Funktionsweise von Arrays und wie ich sie übergeben kann zu machen hab ich ein simples skript entwickelt.

    Ein php-file, von dem aus ich mittels formular ein wort in ein array einfügen kann. danach soll mir das aktualisierte array mit allen einträgen anzeigen.
    Seit 2 Tagen hab ichs nicht hingekriegt....

    zuerst hab ich versucht mittels serialize zu encoden und so über formular zu übergeben. nachdem ich gelesen hab das das ganze über sessions zu handlen schöner ist, bin ich jetz darauf umgestiegen.

    PHP-Code:
    function sendtosession($var)
          {
          
    $var serialize($var);
          
    $var base64_encode($var);
          
    $_SESSION['myarray'] = $var;
        }; 
    PHP-Code:
    function getfromsession()
          {
          
    $var base64_decode($_SESSION['myarray']);
          
    $varunserialize($var);
          return 
    $var;
          }; 
    Mein Problem fängt schonmal damit an (das hatte ich auch schon wie ich mit Post versucht hab) das ich es nicht schaffe, der aus der Session geholten Variable auch tatsächlich den Typ eines Arrays zuweise.
    Jedes mal wenns mir gelingt einen Wert aus der session zu extrahieren, bekomme ich beim versuch etwas anzufügen die fehlermeldung, das dafür ein Array notwendig ist...

    kann mir viell. jmd der das schon ein paar mal gemacht hat nen einfachen weg von $var[] => Session => $var[] angeben. Ich verzweifel echt langsam dran... Zuviele stunden ohne erfolg... (und ich weiss genau das es wieder irgendne kleinigkeit is die ich ned bedacht hab und ich mir weil ich mich so drüber ärger mein leben lang merk)...

    Ausserdem bin ich immer noch etwas verwirrt über die Verwendung von $array[] = $var
    auf php.net steht zb das man damit das array erweitern kann sofern es noch nicht existiert, woanders hab ich gelesen das man damit nur eines erstellen bzw überschreiben kann. Was macht
    wie sollte mein array nach:
    PHP-Code:
    $array = array(1,2,3,4)
    $array[] = "5"
    aussehn? (1,2,3,4,5) oder (5)?

    danke im vorraus
    liquid
    Zuletzt geändert von liquid; 29.10.2006, 21:08.

  • #2
    Zu deiner letzten Frage: Das Array würde so aussehen: (1,2,3,4,"5")

    Generell kannst du es so probieren:

    PHP-Code:
    $bla = array();
    $_SESSION['test'] = $bla;
    $_SESSION['test'][] = 'wert';
    $blub $_SESSION['test'];

    echo 
    '<pre>'print_r($_SESSION); echo '</pre>';
    echo 
    '<br />';
    var_dump($blub); 
    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: Arrays übergeben

      Machs nicht komplizierter als es ist:
      PHP-Code:
      <?php

      $a 
      = array(1,2,3);
      var_dump($a);
      $a[] = 4;
      var_dump($a);

      session_start();
      var_dump($_SESSION);
      if (!isset(
      $_SESSION['foo'])) {
          
      $_SESSION['foo'] = $a;
      }
      var_dump($_SESSION);

      ?>

      Kommentar


      • #4
        danke für die Antworten. Viel schlauer bin ich jetz aber immer noch ned.

        @onemorenerd:
        Versteh ich den code richtig?:
        du erstellst array $a, gibst seinen vorläufigen wert aus, fügst 4 hinzu, gibst aktuellen wert aus, startest session, gibst aktuellen session-wert aus, überprüfst ob die session schon existiert und wenn ned, wirfst du $a auf die session. (abstrakt ausgedrückt ^^).

        sieht ja soweit einfach aus.

        Kann ich mit dem Array in der Session auch ganz normal arbeiten wie mit einem Array das ich im code definert hab?

        also mit
        $_SESSION['foo'] = array(1,2,3);
        $_SESSION['foo'][] = 4;

        greez + dank im vorraus
        liquid

        Zuletzt geändert von liquid; 29.10.2006, 23:41.

        Kommentar


        • #5
          Original geschrieben von liquid
          @onemorenerd:
          Versteh ich den code richtig?:
          du erstellst array $a, gibst seinen vorläufigen wert aus, fügst 4 hinzu, gibst aktuellen wert aus, startest session, gibst aktuellen session-wert aus, überprüfst ob die session schon existiert und wenn ned, wirfst du $a auf die session. (abstrakt ausgedrückt ^^).
          Genau. Und die Prüfung, ob $_SESSION['foo'] bereits existiert fällt beim ersten Laden negativ aus. Beim zweiten nicht. Deshalb.
          Kann ich mit dem Array in der Session auch ganz normal arbeiten wie mit einem Array das ich im code definert hab?

          also mit
          $_SESSION['foo'] = array(1,2,3);
          $_SESSION['foo'][] = 4;
          Du kannst das Array foo auch wieder aus der Session auspacken, es wieder a nennen oder haumichblau oder wie du magst.
          PHP-Code:
          $a $_SESSION['foo']; 
          Zuerst hattest du doch versucht, ein Array serialisiert weiterzugeben. Im Prinzip ist es mit einer Session genau das selbe. Du sagst $_SESSION['foo'] = $a und beim Beenden des Skripts serialisiert PHP $_SESSION (ist ja auch nur ein Array), speichert den entstandenen String auf dem Server in einer Datei und beim nächsten session_start() wird diese de-serialisiert und zapp zarapp ist $_SESSION wieder genau das, was es vorher war.

          Kommentar


          • #6
            jetz mal im ernst.. warum hab ich da so rumgeschissen???

            Wenn man Sessions als globales Array behandelt und Das Array in der Session als unter-array, brauch ich mir ja garkeine gedanken mehr über senden und empfangen machen.. viele graue haare umsonst gekriegt...

            danke für die hilfe. kenn mich jetz großteils aus ^^

            Ich glaub mir ham zuviele leute aus irgendwelchen uralt-php-versionen rezitiert... sonst hätt ich so ne einfache lösung doch nie ausschliessen können :-)

            greez & vielen dank

            Kommentar

            Lädt...
            X