• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Es regnet, ist neblig und kalt, alle sind krank und der Chef wird zunehmend cholerisch. Das Thema des Monats ist also folgerichtig --> Das Grau(en)
    Wir sind gespannt, war Euch dazu einfällt! Zum Wettbewerb --> Klick

01 aus timestamp != 01 ?

Juuro

Schafnase
Registriert
07.11.05
Beiträge
2.256
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
 

Juuro

Schafnase
Registriert
07.11.05
Beiträge
2.256
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... ;)
 
  • Like
Reaktionen: 1 Person

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
ist doch logiscch! Wenn «01» zurückkommt, dann ist das keine Zahl sondern ein String. Der muß halt zuerst in eine Zahl gewandelt werden.
 

Juuro

Schafnase
Registriert
07.11.05
Beiträge
2.256
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.
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
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...
 
Zuletzt bearbeitet:

kauan

Stina Lohmann
Registriert
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
 

Juuro

Schafnase
Registriert
07.11.05
Beiträge
2.256
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...

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.
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
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.
 

kauan

Stina Lohmann
Registriert
31.12.05
Beiträge
1.043
Jopp. Sag ich ja.
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