Engel07: Variabeln

Hallo

Ich habe erst gerade mit PHP angefangen und nun eine Frage
zu Variabeln. Leider hat mich Googeln nicht weitergebracht.
Darum dachte ich mir, ich wende mich mal an Euch.
Was ist der Unterschied von folgender Variable:

$test=1;
$test='1';
$test="1";

Ich gehe davon aus, dass "1" die Zahl in einen Text umwandelt.
Stimmt diese Annahme? Wie verhält sich die 1 in den anderen
Schreibweisen?

Gruss aus der CH
Engel07

  1. Moin Engel07,

    $test=1;

    Das initialaisiert die Variable als integer, allerdings kann sich das bei einer neuen Zuweisung ändern. Bedeutet, würdest du nocheinmal sagen: $test='1', dann würde der Typ in char geändert.

    $test='1';
    $test="1";

    Beides ist char, wobei diese Zuweisung ="1" geparst wird, unötiger Weise

    regds
    Mike©

    --
    Freunde kommen und gehen. Feinde sammeln sich an.
    1. Danke für die rasche und ausführliche Antwort!

      Gruss
      Engel07

    2. Hallo zusammen,

      Beides ist char

      nein, beides sind Strings.

      wobei diese Zuweisung ="1" geparst wird, unötiger Weise

      Bedingt, siehe http://forum.de.selfhtml.org/archiv/2003/8/54141/#m300888.

      Grüße
        David

      --
      >>Nobody will ever need more than 640k RAM!<<
      1981 Bill Gates
      1. hi,

        wobei diese Zuweisung ="1" geparst wird, unötiger Weise
        Bedingt, siehe http://forum.de.selfhtml.org/archiv/2003/8/54141/#m300888.

        nein, nicht bedingt - unbedingt :-)

        strings in doppelten anführungszeichen werden geparst, strings in einfachen hochkommata nicht.
        http://www.php.net/manual/de/language.types.string.php#language.types.string.parsing

        dass es von der performance her in einfachen scripten idR. keinen bemerkbaren unterschied machen wird, sei dahingestellt.

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
      2. Moin David,

        Beides ist char
        nein, beides sind Strings.

        Könntest Du mir den Unterschied erklären? Ist char kein String?
        Wenn Du in der Datenbank einen Typ zuordnest dann gibt es IMHO keinen Typ String, sondern CHAR, VARCHAR, TEXT, LONGTEXT.

        wobei diese Zuweisung ="1" geparst wird, unötiger Weise
        Bedingt, siehe http://forum.de.selfhtml.org/archiv/2003/8/54141/#m300888.

        Wenn hierzu kein Kommentar gekommen wäre, dann hätte mich das verwundert ;-)

        regds
        Mike©

        --
        Freunde kommen und gehen. Feinde sammeln sich an.
        1. hi,

          Beides ist char
          nein, beides sind Strings.

          Könntest Du mir den Unterschied erklären? Ist char kein String?

          char = character bezeichnet in den meisten programmiersprachen genau _ein_ zeichen.
          ein string hingegen besteht aus einem oder mehreren zeichen, benötigt des weiteren noch eine ende-kennzeichen oder einen speicherplatz für seine länge.

          char entspricht hingegen vom speicherplatzbedarf einem small int(eger).
          und in vielen programmiersprachen werden beide auch ähnlich gehandhabt, d.h. du kannst einem char-feld den zahlenwert 65 zuweisen, und bekommst dann wenn du es ausgeben lässt 'A' angezeigt.

          allerdings macht PHP auch hier wieder nicht diese explizite unterscheidung, wie sie andere programmiersprachen kennen.

          Wenn Du in der Datenbank einen Typ zuordnest dann gibt es IMHO keinen Typ String, sondern CHAR, VARCHAR, TEXT, LONGTEXT.

          mysql != PHP

          gruß,
          wahsaga

          --
          "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
          1. Moin wahsaga,

            mysql != PHP

            *ACK* Ich gestehe char mit String in einen Topf geworfen zu haben.
            In meinem Kopf ist char = String, wobei deine Ausführungeng über das, in freier Wildbahn lebende :-) ,  char natürlich vollkommen korrekt sind.

            regds
            Mike©

            --
            Freunde kommen und gehen. Feinde sammeln sich an.