1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

01 aus timestamp != 01 ?

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Juuro, 11.01.08.

  1. Juuro

    Juuro Schafnase

    Dabei seit:
    07.11.05
    Beiträge:
    2.255
    Hallo allerseits,

    ich habe ein kleines timestamp Problem und ich verstehe leider nicht wie es zustande kommt.
    Also ich ermittle den aktuellen Monat:
    Code:
    $monat = date("m",$timestamp);
    Gut, somit steht in der Variable $monat die Zahl 01. Jetzt hab ich in einem Array die deutschen Monatsnamen gespeichert und um den Namen des aktuellen Monats zu ermitteln mach ich folgendes:
    Code:
    echo $a_monat[$monat];
    Das gibt aber leider garnichts aus.
    Wenn ich aber folgendes mache:

    Code:
    echo $a_monat[01];
    Dann wird auch Januar ausgegeben. Sehr seltsam. Im $monat steht doch genau das selbe wie ich beim zweiten Versuch händisch reinschreibe. Wieso funktioniert das nicht?

    Viele Grüße, Juuro
     
  2. Juuro

    Juuro Schafnase

    Dabei seit:
    07.11.05
    Beiträge:
    2.255
    Okay, das was die date-Funktion ausgibt scheint wohl kein Integer-Wert zu sein und daran scheitert dann die Verarbeitung im Array. Mit folgendem klappt nämlich:
    Code:
    $monat = (int)date("m",$timestamp);
    Schweinerei... jetzt mach ich da die ganze Zeit dran rum und wenn ich dann in einem Forum danach frag komm ich nach paar Minuten selbst drauf.... also sorry für das unnötige Thema... ;)
     
    1 Person gefällt das.
  3. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    ist doch logiscch! Wenn «01» zurückkommt, dann ist das keine Zahl sondern ein String. Der muß halt zuerst in eine Zahl gewandelt werden.
     
  4. Juuro

    Juuro Schafnase

    Dabei seit:
    07.11.05
    Beiträge:
    2.255
    Hm... find ich nicht unbedingt logisch.

    $zahl = 46; ist auch ne Zahl, also zumindest kann man damit rechnen, und wenn mans mit echo ausgibt wirds auch dargestellt.

    Wenn mans nicht ursprünglich selbst initialisiert hat sieht man einer Variable bzw. Ausgabe in PHP halt nicht gleich an obs nen String oder Integer ist, denn

    $zahl = 87; und $zahl = "87";

    hat die selbe Ausgabe.
     
  5. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    Doch. Eine Zahl, die bei der Ausgabe ohne Formatangabe mit 0 beginnt ist immer ein String. In jeder mir bekannten Programmiersprache.

    Aber um Dich gänzlich zu verwirren, rate mal, was
    Code:
    echo 010 - "010"
    ausgibt...
     
    #5 Skeeve, 11.01.08
    Zuletzt bearbeitet: 11.01.08
  6. kauan

    kauan Stina Lohmann

    Dabei seit:
    31.12.05
    Beiträge:
    1.043
    Hallo Juuro

    $zahl = 87 ist ein Integer
    $zahl = "87" ist ein String
    Das ist nicht dasselbe. Es sieht zwar bei einer Ausgabe mit echo gleich aus, ist aber trotzdem nicht ganz dasselbe. Genaueres ueber den Datentypen bekommst du mit var_dump.
    Um einen richtigen Vergleich zu machen, verwende === statt ==
    Code:
    $int = 12;
    var_dump($int);
    // Ausgabe: int(12)
    
    $str = "12";
    var_dump($str);
    // Ausgabe: string(2) "12"
    
    if($int == $str) {
        // Das trifft zu
    }
    if($int === $str) {
        // Das hingegen nicht
    }
    Merke: Was gleich aussieht, ist nicht zwingend gleich. Im speziellen nicht in PHP.

    Und: Wenn du mit Strings rechnest, dann werden diese in Zahlen umgewandelt.

    gruss
    Jonathan
     
  7. Juuro

    Juuro Schafnase

    Dabei seit:
    07.11.05
    Beiträge:
    2.255
    Okay... das finde ich jetzt seltsam. Hätte gedacht dass da 0 rauskommt, aber ne es kommt -2 raus. :oops: Wieso ist 010 = 8 ?

    @kauan:
    Jopp. Sag ich ja.
     
  8. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    Weil die Notation 010, da sie mit einer Null beginnt, bedeutet, daß die Zahl oktal zu werten ist. Ähnlich, wie 0x10 16 entspricht, da die Notation für das hexadezimale System steht.
     
  9. kauan

    kauan Stina Lohmann

    Dabei seit:
    31.12.05
    Beiträge:
    1.043
    Und der Grund dafuer ist halt, dass man in PHP nicht explizit Datentypen definieren kann (das ist definitiv kein Müssen sondern ein Dürfen).
    Darum: Eingaben immer ueberpruefen, was eine Zahl sein sollte, muss nicht zwingend eine sein. 0 ist nicht gleich "0" ist nicht gleich null ist nicht gleich "".
    Man kann auch mit PHP schoenen Code schreiben, aber man muss sich dazu zwingen :)

    gruss
    Jonathan
     

Diese Seite empfehlen