Array mit oder ohne Anführungszeichen

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

  • Array mit oder ohne Anführungszeichen

    Hey Folks,

    ich bin hier gerade so am rumwerken und bemerke eine Interessante begebenheit:
    In einem Templatesystem, wo ich leider nicht weiß, welches es ist, werden Arrays
    ohne '' <- Anführungszeichen (die heißen bestimmt anders!) verwendet.

    also: $array[value]
    anstatt: $array['value']

    kann mir das jmd kurz erklären?
    Design & Coding with a breeze of madness at xjonx

  • #2
    Ich würde darauf tippen, das value bei deiner Template-Engine ein Platzhalter ist, der ersetzt wird ducrch eine Variable oder einen String mit Hochkommata.
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      hmm... letztlich ja, gut idee.
      ich muss mal schauen was
      das für ne bewandniss hat...
      Design & Coding with a breeze of madness at xjonx

      Kommentar


      • #4
        nee, wohl eher nicht. oder meinst du ernsthaft das im PHP-Code ersetzungen gemacht werden.

        wenns im template steht, wird das komplette konstrukt der platzhalter sein
        und
        wenns im code steht, da hat da mal wieder jemand unsauber programmiert und erhält nen haufen notices.

        Kommentar


        • #5
          das fällt mir auch auf: es wird nicht im template, sodern in den funktionsdateien verwendet.
          daher läuft es dann wohl auf die schlampe hinaus...

          aber das es überhaupt geht, weil ich hab es auch mal probiert und es ging nicht.
          Design & Coding with a breeze of madness at xjonx

          Kommentar


          • #6
            hauptsache erstmal nen thread aufgemacht und dann nachgedacht/-guckt.

            Doch es geht. Ich tippe mal eher darauf, dass dein Code noch schlechter war.

            Kommentar


            • #7
              Original geschrieben von xJonx
              aber das es überhaupt geht, weil ich hab es auch mal probiert und es ging nicht.
              Es wäre korrekt unter der Bedingung, dass eine Konstante names value definiert ist (Konstante mit kleingeschriebenem Namen dürfte aber im allgemeinen dann wieder als schlechter Stil gelten, gängige Konventionen geben Benennung in Großbuchstaben vor).

              Unter Array do's und don'ts - Warum ist $foo[bar] falsch? findest du eine ausführlichere Erklärung, warum es falsch ist, wenn value keine definierte Konstante darstellt.

              Zitat:
              Es ist falsch, funktioniert aber.
              Bei scharf eingestelltem error_reporting bekommst du in solchen Fällen eine entsprechende Warnmeldung.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                ah, cool ... danke
                Design & Coding with a breeze of madness at xjonx

                Kommentar


                • #9
                  Korrekt wäre aber auch:
                  PHP-Code:
                  echo $bla[5
                  Bzw. wenn das Array so definiert sein würde
                  PHP-Code:
                  $bla = array('5' => 'fünf'); 
                  wäre der Befehl
                  PHP-Code:
                  echo $bla[5
                  wieder nicht korrekt, oder?
                  Mein Audio-Player · Mein Computer

                  Kommentar


                  • #10
                    Korrekt wäre aber auch:
                    PHP:
                    echo $bla[5]
                    ja, weil fünf ein integer ist und dann auf den 6. index zeigt.
                    wäre der Befehl
                    PHP:
                    echo $bla[5]
                    wieder nicht korrekt, oder?
                    jupp, weil es a) keinen 6. index gibt und b) "5" ein String ist.

                    Kommentar


                    • #11
                      jupp, weil es a) keinen 6. index gibt und b) "5" ein String ist.
                      Naja... Da ist die Typekonvertierung von PHP wieder sehr aktiv!! GRRR...
                      (evtl sogar versionsabhängig)
                      PHP-Code:
                      $t = array();
                      $t[1] = 27;
                      $t['2'] = 56// der index mutiert zu (int)2 Grrr.....
                      $t[3.1] = 77// die mutation zu (int)3 kann man ja noch verstehen
                      $t['3.45'] =  23// jetzt wirds doof

                      var_export($t);
                      foreach(
                      $t as $k => $v)
                         if(
                      is_string($k))
                         {
                            echo 
                      " <br>$k  ist ein String";
                         }else
                         {
                            echo  
                      " <br>$k  ist kein String";
                         } 
                      Das wird alles so von PHP ohne Meldung weggesteckt!!
                      Zuletzt geändert von combie; 03.01.2007, 21:08.
                      Wir werden alle sterben

                      Kommentar


                      • #12
                        php halt, nur deswegen hat dieses forum so viele user...

                        Kommentar


                        • #13

                          Und allen "richtigen" Programmieren stellen sich die Nackenhärchen auf,
                          wenn sie nur PHP hören


                          Die schwache Typisierung dieser Sprache dürfte das größte Manko sein..
                          (hat mich schon lange Stunden, fast bis zum dulldrehn, gekostet)
                          Hoffendlich wird wirklich mit PHP6 ein Typesichers switch() Konstrukt eingeführt, so daß man auf das leicht perverse switch(TRUE) verzichten kann..
                          Zuletzt geändert von combie; 04.01.2007, 15:02.
                          Wir werden alle sterben

                          Kommentar


                          • #14
                            Original geschrieben von combie

                            Und allen "richtigen" Programmieren stellen sich die Nackenhärchen auf,
                            wenn sie nur PHP hören


                            Die schwache Typisierung dieser Sprache dürfte das größte Manko sein..
                            (hat mich schon lange Stunden, fast bis zum dulldrehn, gekostet)
                            Hoffendlich wird wirklich mit PHP6 ein Typesichers switch() Konstrukt eingeführt, so daß man auf das leicht perverse switch(TRUE) verzichten kann..
                            im grunde hast du echt recht! und ich kann nur zu gut verstehen, welche probleme einige bekommen, wenn sie mit php anfangen! Um sicher mit typen umgehen zu können, ist eigentlich schon eine sprache wie C nötig! Aber php ist einfach DIE sprache im inet!!
                            naja, solange wir alle unsere arrays korrekt verwenden...

                            Kommentar


                            • #15
                              Ich wollte noch danke für die "tollen" antworten sagen
                              Design & Coding with a breeze of madness at xjonx

                              Kommentar

                              Lädt...
                              X