NOCH GENAUER?! ;-)
Also gut. Ich fang bei Zero an:
Variablen haben einen typen. Bei "normalen" Programmiersprachen muss man diesen immer angeben bevor man die variable benutzt. Man deklariert sie quasi vorher, damit mein compiler weiss, dass $meine_var eine variable ist, und ich bestimme dabei was für einen datentyp sie aufnehmen kann.
Die Atomaren Datentypen in PHP sind:
Boolsche Typen: true/flase oder 1/0
Integer Typen: Natürliche zahlen inklusive 0
Fliesskomma: oder Float oder double oder real sind reelle zahlen.
Strings: Zeichenketten, oder einfacher Text.
An der stelle soll hier mal schluss sein. Wenn sehen willst was es noch für datentypen gibt guck dir das hier an:
http://www.php.net/manual/de/language.types.php
Aber nun zu deinem Problem. Da bei PHP variablen nie vorher deklariert werden müssen erfasst PHP den datentypen dynamisch. Wenn ich mir jetzt also ne Variable $var hernehme, die nirgendwo aufgetaucht ist und ihr einfach den wert $var = "2" zu weise, dann bestimmt PHP den datentypen als String. Warum? Ganz klar, weil die 2 in anführungszeichen steht. Anführungszeichen markieren bei PHP Strings. Da 2 als solches auch ein String ist, ist logich, nur kann ich halt mit strings schlecht rechnen (Siehe beispiel "kaffeetasse" * "kaffe").
Lass ich nun die "" weg, dann ist es ein normaler integerwert, also eine natürliche zahl. Damit kann ich sehr gut rechnen. Deine andere Variable ist kein Integer sondern ne Float oder real oder was auch immer, halt eine reele zahl.
Ne natürliche Zahl ist aber auch gleichzeitig ne Reele. Integer ist eine Teilmenge von float. 2.0 element float ist das gleiche wie 2 element int.
PHP erkennt dies automatisch (bei anderen programmiersprachen muss man peinlichst genau auf den datentypen acht) und führt die multiplikation 2.0 * 5.6 aus. Ergebnis ist wiedrum ein float.
So ich hoffe der kleine Exkurs über elementare Datentypen war jetzt verständlicher.
So Long
TheVirus