Websiteentwicklung: PHP: Praktische Einführung: Typen und Operatoren

In den vorigen Kapiteln hast du Zahlen einfach eingegeben, während Text in einfache Anführungszeichen gesetzt wurde. Zahlen und Text sind zwei verschiedene Dinge, man kann auch sagen: Typen. PHP ist eine schwach typisierte Sprache, das heißt, Variablen wechseln je nach Bedarf ihre Typen, aus Ganzzahlen werden Zeichenketten und umgekehrt. In diesem Kapitel werden dir die vier skalaren Typen vorgestellt sowie die Operatoren.

var_dump()

Bearbeiten

Wann immer du dir Informationen über eine Variable anzeigen lassen möchtest, kannst du die Funktion var_dump verwenden. Sie gibt dir Informationen über Typ und Inhalt dieser Variable:

<?php

var_dump('Dschungel');
/* Ausgabe:
string(9) "Dschungel" */
?>

Der erste Typ, den du kennen gelernt hast, war der String. Ein String kann Zeichen enthalten:

<?php

$erster_string = 'Ich bin ein String';
$leerer_string = '';

?>

Strings definieren

Bearbeiten

Es gibt vier Wege, in PHP einen String innerhalb des Codes (also nicht beispielsweise durch Auslesen einer Datei) zu definieren, von denen dir hier die zwei wichtigsten vorgestellt werden.

Den Themenbereich Strings definieren vertiefen...


Einfache Anführungszeichen

Bearbeiten

Diese Methode hast du bisher verwendet. Du brauchst hierbei nichts zu beachten, außer, du willst das einfache Anführungszeichen selbst ausgeben. Dann musst du es mit einem Backslash (\) escapen:

<?php

'Ein String mit \', dem einfachen Anführungszeichen';

?>

Da der Backslash als Escapezeichen verwendet wird, musst du, wenn du diesen ausgeben willst, den Backslash selbst escapen (\\).

Doppelte Anführungszeichen

Bearbeiten

Ein String in doppelten Anführungszeichen wird um besondere Funktionen erweitert: Zum einen werden spezielle Escapezeichen erkannt (etwa \n für eine neue Zeile), zum anderen werden Variablen im String erkannt. Beispiele:

<?php

$variable = 'Affe';

echo 'Im Dschungel lebt ein $variable.'; // Ausgabe: Im Dschungel lebt ein $variable.
echo "Im Dschungel lebt ein $variable."; // Ausgabe: Im Dschungel lebt ein Affe.

echo "Diesen Zeilenumbruch \n siehst du nur im Quelltext der HTML-Seite (weil er kein br-Tag ist).";

echo "Man kann den Zeilenumbruch
auch direkt eingeben.";

echo 'Aber in einfachen Anführungszeichen funktioniert \n er nicht.';

?>

Es kann vorkommen, dass auf den Variablennamen noch ein Zeichen folgen kann, was PHP dem Variablennamen zurechnen würde:

<?php

$variable = 'Affe';

echo "Im Dschungel leben viele $variablen."; // Ausgabe: Im Dschungel leben viele .

?>

PHP wird im String die Variable $variablen lesen. Da die Variable nicht definiert wurde, wird sie durch nichts ersetzt.

Um PHP zu sagen, dass er die Variable "$variable" nehmen soll und das n lediglich für den Plural dort steht, kannst du die Schreibweise mit geschweiften Klammern verwenden:

<?php

$variable = 'Affe';

echo "Im Dschungel leben viele {$variable}n."; // Ausgabe: Im Dschungel leben viele Affen.

?>
Hinweis

Auf der höchsten error_reporting-Stufe hätte PHP einen Hinweis ausgegeben, dass eine nicht definierte Variable verwendet wurde. Bei der Fehlersuche ist diese höchste Stufe sehr hilfreich. Du findest mehr Informationen dazu im Kapitel Fehlerbehandlung.

Der Verkettungsoperator (.)

Bearbeiten

Um aus zwei Strings einen zu machen, kannst du den Verkettungsoperator (.) verwenden:

<?php

$ort = 'Dschungel';
$tier = 'Affe';

echo 'Im ' . $ort . ' lebt ein ' . $tier; // Im Dschungel lebt ein Affe
echo 'Jeder ' . $tier . ' ist ein Tier, aber nicht jedes Tier ist ein ' . $tier; /* Jeder Affe ist ein Tier,
                                                                       aber nicht jedes Tier ist ein Affe */

$tier = $ort . $tier;

echo $tier; // DschungelAffe


?>

Für die Zuweisung $variable = $variable . $string gibt es auch eine Kurzschreibweise:

<?php

$wort1 = 'Dies';
$wort2 = ' ist';
$wort3 = ' ein';
$wort4 = ' Satz';

$satz  = $wort1;
$satz .= $wort2; // ist dasselbe wie: $satz = $satz . $wort2;
$satz .= $wort3;
$satz .= $wort4;

?>

Ein Integer ist eine Ganzzahl (mathematisch ausgedrückt: Ein Element aus der Menge Z).

Die Operatoren +, -, *, / und %

Bearbeiten

Auf Integers kannst du die üblichen Rechenoperationen anwenden: + Addition, - Subtraktion, * Multiplikation und / Division, sowie den Modulus %, der den Rest einer Division zurückgibt.

<?php

echo 1 + 1; // 2
echo 2 * 21; // 42
echo 3 - 4; // -1
echo 10 / 2; // 5
echo 7 % 3; // 1, denn 7 geteilt durch 3 ist 2 Rest 1

$var = 1 / 2; // 0,5; $var ist jetzt vom Typ Float

$evil = 10 / 0; // ungültig; erzeugt Fehlermeldung "Warning: Division by zero"

?>

Auch für diese Operatoren gibt es Kurzschreibweisen (+=, -=, *=, /= und %=).

^ ist übrigens kein Zeichen für Potenzen, wie es in manchen Sprachen üblich ist, sondern ein Bitoperator. Bitoperatoren werden nur in sehr seltenen Fällen benötigt. Mehr Informationen findest du im entsprechenden Referenzkapitel Operatoren. Verwende für die Potenzoperation die Funktion pow.

Inkrement- und Dekrementoperator

Bearbeiten

Eine Besonderheit sind der Inkrement- und der Dekrementoperator. Häufig muss man den Wert einer Variable um exakt eins erhöhen oder erniedrigen. Anstatt nun $i += 1 schreiben zu müssen, gibt es eine noch kürzere Schreibweise: $i++. Es ist üblich, diese Operatoren im Zusammenhang mit Schleifen zu verwenden.

Zwischen den beiden Varianten mit $i++ bzw. $i-- auf der einen, ++$i und --$i auf der anderen Seite gibt es nur einen kleinen Unterschied: Wenn der Operator vor der Variable steht, wird zunächst die Variable um eins erhöht/erniedrigt und dann zurückgegeben; steht der Operator nach der Variable, wird erst der alte Wert zurückgegeben und dann die Variable um eins erhöht.

<?php

$a = 5;

echo $a++; // gibt 5 aus
echo $a; // gibt 6 aus
echo ++$a; // gibt 7 aus

?>
Den Themenbereich Operatoren vertiefen...


Variablen vom Typ Float sind Fließkommazahlen, oder, mathematisch ausgedrückt, Dezimalzahlen. Beachte, dass die englische Notation verwendet wird, in der ein Komma ein Punkt ist (also z.B. 12.4 für 12,4). Das Komma wird in PHP ausschließlich zur Trennung von Argumenten verwendet, der Punkt sowohl zur Verkettung von Strings als auch als Dezimalzeichen.

<?php

$float1 = 12.5;
$float2 = 3 / 4;
$float3 = 5e3; // Exponentialschreibweise, dasselbe wie 5 mal 10 hoch 3 bzw. 5 * pow(10, 3) oder 5000

?>

Auf Floats können die gleichen Rechenoperationen wie auf Integers angewendet werden.

Eine Variable vom Typ Boolean kann nur zwei Werte annehmen: 1 oder 0, an oder aus, wahr (true) oder falsch (false). Booleans werden am häufigsten in Kontrollstrukturen benutzt und von vielen Funktionen zurückgegeben. Einen Boolean definierst du über die (speziellen) Konstanten true oder false.

<?php

$wahr = true;
$falsch = false;

$int = 15;

var_dump(is_int($int)); /* is_int prüft, ob eine Variable vom Typ Integer ist.
Ausgegeben wird: bool(true) */

$int .= 'Test'; // $int wird zum String '15Test'
var_dump(is_int($int)); // Ausgabe: bool(false)

?>

Wenn du einen Integer mit echo ausgibst, wird dieser automatisch in einen String umgewandelt, da echo nur Strings als Argumente erwartet. Wenn du zwei Strings addierst, etwa '5' und '15', werden diese in Integers konvertiert. Wenn du zehn durch drei teilst, ist das Ergebnis vom Typ Float.

PHP ist, wie schon erwähnt, eine schwach typisierte Sprache und lässt solche Dinge zu. Manchmal kann es aber nötig sein, eine Variable explizit auf einen bestimmten Typ zu setzen. Dies geschieht mittels Casting: Schreibe einfach vor die Variable den Namen des Typs in Klammern.

<?php

$test = '5'; // String
$zahl = (int)$test; // Casten zu Integer (5)
$bool = (bool)$test; // Casten zu Bool (true)

?>

Umfangreiche Informationen, was bei einem Casting für ein Wert angenommen wird, findest du im Referenzkapitel Variablen.

Spezialfall Booleans

Bearbeiten

Wenn man eine Variable zu einem Boolean castet (was implizit in einigen Kontrollstrukturen, welche wir später noch kennenlernen, passiert), ist es wichtig zu wissen, welche Werte true und welche Werte false ergeben, da dies in PHP nicht so einfach ist wie in manchen anderen Sprachen.

Alle folgenden Werte werden dabei als false ausgewertet:

false    #=> Boolean
0        #=> Integer
0.0      #=> Float
""       #=> leerer String
"0"      #=> String
array()  #=> leeres Array (Arrays werden in einem späteren Kapitel noch behandelt)
NULL     #=> also auch alle nicht gesetzten Variablen

Alle anderen Werte werden als true ausgewertet!