komisch?!

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

  • komisch?!

    Hi, wieder mal ein Problem:
    PHP-Code:
    $username[1] = "admin";
    echo 
    $username[1]; 
    Ausgabe:
    Code:
    a
    Warum wird nur a ausgegeben und nicht admin ?

    Micronax

  • #2
    das muss an deinem php-(script) liegen.

    ich habe es gerade getestet:
    PHP-Code:
    <?php
    $username
    [1] = "admin";
    echo 
    $username[1];
    ?>
    und die ausgabe war admin .
    (php version 4.4.1, unter win xp)


    *edit*
    liegt ahn php:
    achso, habs mal ausprobiert

    PHP-Code:
        // register_globals on simulieren
        
    $lang='de';
        
    $lang['LOGOUT'] = 'Logout';
        
    $lang['LOGOUT_TITLE'] = 'Klicken Sie hier um sich auszuloggen';
        echo 
    $lang[blub];
        
    // Ausgabe: K 

    $lang wird durch register_globals als string gesetzt und alle folgenden array-zuweisungen beziehen sich auf den string.
    sehr schöner effekt

    aber da ausgabe "K" ist, hat es nichts mit $lang='de'; zu tun, sondern die letzte array-zuweisung gewinnt (Klicken...).
    also fing beim op die letzte zuweisung mit "d" an, oder er hat $lang irgendwo explizit überschrieben, wie ich es vermutet habe.
    Zuletzt geändert von Rolandbar; 19.09.2006, 18:49.
    Onlie Browsergame: http://www.war-of-empire.de <-- 2. Weltkrieg

    Kommentar


    • #3
      Re: komisch?!

      Hatten wir erst letztlich noch, und außerdem: http://www.php.net/manual/en/languag....string.substr
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Weil du so auf einzelne Elemente des Strings zugreifst vllt. Ist $username mit array() initialisiert ?
        Mach ein var_dump() $username. Könnte wetten, dass ist ein String

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          PHP-Code:
          $username = array(); 
          und es geht!

          Danke!

          Kommentar


          • #6
            und es geht!
            Immer schön brav die Vars initialisieren, wie es sich in jeder Programmiersprache gehört
            Dann gehört solches Verhalten der Vergangenheit an

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Original geschrieben von jahlives
              Immer schön brav die Vars initialisieren, wie es sich in jeder Programmiersprache gehört
              da gebe ich dir recht, ist die sauberste lösung.
              nur ist php keine "richtige" programmiersprache, sondern eher eine scriptsprache.

              Kommentar


              • #8
                nur ist php keine "richtige" programmiersprache, sondern eher eine scriptsprache.
                Agree, aber genau aus diesem Grunde können solche Fehler nur bei solchen Sprachen auftreten. Bei Java,C++ etc ppt würden dir solche Fehler gleich um die Ohren gehauen.
                Aber auch bei "Nichtprogrammiersprachen" lassen sich solche Fehler und weitere Risiken beheben, wenn man die Vars sauber initialisiert.
                So long

                Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  Original geschrieben von jahlives
                  Aber auch bei "Nichtprogrammiersprachen" lassen sich solche Fehler und weitere Risiken beheben, wenn man die Vars sauber initialisiert.
                  ja, ich gebe dir ja recht.
                  nur ein merkmal von scriptsprachen ist: "dynamische, automatische Typumwandlung, bzw. ganz fehlende Typunterscheidung
                  " (quelle: wikipedia)

                  d.h.: selbst wenn du eine var am anfang des scriptes als int initialisiertst, kann sie am ende des scriptes auch ein array (oder sonstwas) sein.

                  Kommentar


                  • #10
                    d.h.: selbst wenn du eine var am anfang des scriptes als int initialisiertst, kann sie am ende des scriptes auch ein array (oder sonstwas) sein.
                    Aber der Fall wie vom topicstarter beschrieben wäre bei einer Initialisierung der Var als Array wohl nicht aufgetreten

                    Gruss

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar

                    Lädt...
                    X