diesmal: array prob

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • diesmal: array prob

    hallo mal wieder =)

    komm schon wieder nicht weiter. habe ein zweidim. array in folgender form:
    array1 = array2(var1 => var2)
    dürfte ja noch aus meinem ersten post hier bekannt sein *g*

    jetzt möchte ich den wert vom schlüssel austauschen. das habe ich so versucht:

    PHP Code:
    $counter 0;
    while(list(
    $var1$var2) = each($meine_var)) {
      if(
    $var1 == $sonst_was)
        
    $meine_var[$counter][$var1] = $andere_var
      
    $counter++;

    tja aber das haut so nicht ganz hin alle keys in dem array habe ich vorab mit 0'en initialisiert.

    lustigerweise taucht nach der while-schleife ein weiterer index in dem array auf, obwohl ich ja nirgends array_push() o.ä. verwende.

    und schon bin ich wieder ratlos. ich könnte schwören das die zuweisung...
    $meine_var[$counter][$var1] = $andere_var;
    total daneben ist

  • #2
    Re: diesmal: array prob

    Original geschrieben von polar
    komm schon wieder nicht weiter. habe ein zweidim. array in folgender form:
    array1 = array2(var1 => var2)
    dürfte ja noch aus meinem ersten post hier bekannt sein *g*
    Das ist kein zweidimensionales Array sondern lediglich ein Assoziatives Array.

    Ein zweidimensionales ware folgendes:

    PHP Code:
    $name = array("M1" => array("Hans","Mueller"),
                  
    "M2" => array("Jana","Schmidt")
                 );

    echo 
    "Vorname :".$name["M1"][0];   // Ausgabe Hans
    echo "Nachname: ".$name ["M2"][1];   // Ausgabe Schmidt 

    Comment


    • #3
      ok ok! aber warum klappt die zuweisung jetzt nicht? *vollaufdemschlauchsteh*

      ok ich seh schon, evtl ist es doch einfacher ein zweidim. array anzulegen.
      danke erstmal
      Last edited by polar; 16-10-2002, 16:52.

      Comment


      • #4
        Was moechtest du denn damit ueberhaupt machen?

        Leider fehlen bei dem Code-Shnipsel den du gepostet hast ein paar Sachen deshalb kann ich das jetzt gerade nicht nachvollziehen ...

        Comment


        • #5
          naja...

          PHP Code:
          $counter 0;
          while(list(
          $var1$var2) = each($meine_var)) {
            if(
          $var1 == $sonst_was)
              
          $meine_var[$counter][$var1] = $andere_var
            
          $counter++;

          $meine_var enthält (oder sollte) zb. folgende daten:

          $meine_var = array("1" => "0");
          $meine_var = array("5" => "20");
          $meine_var = array("9" => "34");
          ...

          (insgesamt sind es nur 13 einträge, kann sich aber ändern)

          die daten auslesen klappt, aber ich kann sie irgendwie nicht korrekt ändern.

          ich möchte wie folgt die daten ändern können:

          $meine_var = array("1" => "diesen_wert_will_ich_ändern");
          $meine_var = array("5" => "diesen_wert_will_ich_ändern");
          $meine_var = array("9" => "diesen_wert_will_ich_ändern");
          ...

          d.h. $meine_var ist für mich jedenfalls ein array, das ein weiters array beinhaltet. darum geh ich zb. beim auslesen erst den index von $meine_var durch und spreche dann den wert über den key an.

          bin jetzt leider nicht mehr am workspace sondern @home und hab den code nicht hier

          Comment


          • #6
            Hmm, irgendwie scheint es mir, dass du nicht so recht weisst was das mit dem assoziativen Array aus sich hat.

            Das hier funktioniert leider nich, da du jedesmal das Array neu schreibst:

            PHP Code:
            $meine_var = array("1" => "0");
            $meine_var = array("5" => "20");
            $meine_var = array("9" => "34"); 
            das solltest du so machen:

            PHP Code:
            $meine_var = array("1" => "0",
                               
            "5" => "20",
                               
            "9" => "34"); 
            Und nun kannst du den inhalt des arrays ganz einfach aendern:

            PHP Code:
            $meine_var["5"] = "neuer Wert"
            Das erste im Array (bei dir die "1", "5" und "9") sind die sogenannten Keys des Assoziativen Arrays und "0", "20" und "34" die Werte des Arrays.

            Comment


            • #7
              hehe darum schreib ich auch nicht:

              $meine_var = array("1" => "0");

              sondern

              $meine_var[$counter] = array("1" => "0");

              $meine_var ist doch auch ein array =)

              hab ich im letzten post nicht erwähnt, sieht man aber im code. hm egal ich mach's so wie du es vorgeschlagen hast.

              Comment


              • #8
                ahso ... da war ich wohl leicht verwirrt

                Comment


                • #9
                  ja *g* aber jetzt wieder zum eigentlich problem. warum funzt das so nicht:

                  $meine_var[$counter][$var1] = $andere_var;

                  Comment


                  • #10
                    Versuch ichs nochmal:

                    meinste sowas?

                    PHP Code:
                    $arr[0] = array("var1" => 1,
                                 
                    "var2" => 3,
                                 
                    "var3" => 6);
                                 
                    $arr[1] = array("var1" => 10,
                                   
                    "var2" => 30,
                                   
                    "var3" => 60);    

                    $arr[2] = array("var1" => 100,
                                   
                    "var2" => 300,
                                   
                    "var3" => 600);
                                 
                    echo 
                    $arr[0]["var1"]."<br>";
                    echo 
                    $arr[1]["var1"]."<br>";
                    echo 
                    $arr[2]["var1"]."<br>";

                    $arr[0]["var1"] = "bla";
                    $arr[1]["var2"] = "blub";
                    $arr[2]["var3"] = "dumdidum";

                    echo 
                    $arr[0]["var1"]."<br>";
                    echo 
                    $arr[1]["var2"]."<br>";
                    echo 
                    $arr[2]["var3"]."<br>"

                    Comment


                    • #11
                      also...

                      ich steh echt auf dem schlauch. es klappt immer noch nicht (konnte bisher nicht viel probieren, da ich kurz im urlaub war *g*). ich versuchs gerade so..

                      (script1.php, das array initialisieren)

                      PHP Code:
                      $query "select id from $table";
                      $result mysql_query($query);
                        
                      if(
                      mysql_num_rows($result)) {
                        while(
                      $row mysql_fetch_array($result)) {
                          
                      $mein_arr = array($row["id"] => 0);
                          
                      flush();
                        }

                      (script2.php, das array aktualisieren)

                      PHP Code:
                      function refresh_arr($var1$var2) {
                        if(
                      session_is_registered("mein_arr")) {
                          global 
                      $mein_arr;
                          
                      reset($mein_arr);

                          while(list(
                      $id$am) = each($mein_arr)) {
                            if(
                      $id == $var1)
                              
                      $mein_arr["$id"] = $var2;
                          }
                                  
                        }

                      die funktion in script2.php klappt schon nicht. einfach mal ein echo in die while schleife einbauen.

                      (script3.php, das array auslesen)

                      PHP Code:
                      function print_arr() {
                        if(
                      session_is_registered("mein_arr")) {
                          global 
                      $mein_arr;
                          
                      reset($mein_arr);

                          while(list(
                      $id$am) = each($mein_arr))
                            echo 
                      "$id => $am<br>\n";
                        }

                      wenn ich den inhalt von $mein_arr auslesen möchte, wird nur der letzte wert angezeigt... sieht dann so aus: 13 => 0

                      :/

                      nachtrag: ich glaube ich frage besser mal, wie kann ich ein assoziatives array (also key und value) in einer schleife füllen?? das ist genau das was ich brauche.

                      nachtrag2: ok, sorry für die dummen fragen ich hab's jetzt
                      Last edited by polar; 21-10-2002, 11:55.

                      Comment

                      Working...
                      X