Bitte warten...

PHP: Arbeiten mit Variablen

Variablen werden immer durch ein dem Variablennamen vorangestelltes Dollarzeichen $ gekennzeichnet. Zulässige Zeichen sind Klein- und Großbuchstaben (auch des griechischen Alphabets), Zahlen (außer am Anfang des Namens) sowie der Unterstrich. Die Wertzuweisung erfolgt durch das ›Istgleich‹-Zeichen =.

Beispiele:
$a = true;
$b = 42;
$c = "Hallo Welt";
$d007 = array("Lieschen", "Müller", 1970);
$Äö_ß = "Hallo, Welt!";
$λ = 123;

Der Wert bestimmt den Typ einer Variable. Die häufigsten Typen sind:

Wahrheitswerte boolean
Variablen für Zahlen integer, float, double
Variablen für Zeichenketten string
Mehrdimensionale Feldvariablen array

Eine Variable darf ihren Typ im Laufe eines Skriptes auch ändern, wenn z. B. einer Variable des Typs string ein Array als Wert zugewiesen wird. Zwar ist es nicht unbedingt notwendig, Variablen einen Anfangswert zuzuweisen, um sie verwenden zu können (s. Initialisierung), allerdings können nicht initialisierte Variablen eine Meldung vom Typ E_NOTICE erzeugen, sofern diese Meldungen aktiviert sind. Mit $x = null; lässt sich beispielsweise die Variable $x initialisieren, ohne ihr einen Wert zuzuweisen. Auf die gleiche Weise kann der Wert einer Variable auch gelöscht werden, ohne die Variable selbst dabei zu ›zerstören‹, was unter Umständen eben wieder zu einer Fehlermeldung führen würde.

Eine garantiert nicht mehr benötigte Variable kann dagegen mit unset(); ›zerstört‹ werden.

Code kopieren
<?php
  $a = "Haus";
  $b = 123;
  echo $a.$b."<br>";
  echo ($a + $b)."<br>";
  $a = 17;
  echo ($a + $b)."<br>";
  $a = "Haus"; $b = "flur";
  echo $a.$b."<br>";
  echo ($a + $b)."<br>";
  unset($a, $b);
  echo $a.$b."<br>";
  echo ($a + $b)."<br>";
?>

Prüfen von Variablen

Mit bestimmten Funktionen kann man den Typ einer Variable überprüfen:

Code kopieren
<?php
  $a = "Haus";
  if (isset($a)) echo "Die Variable existiert.";
  if (is_string($a)) echo "Die Variable enthält eine Zeichenkette.";
  if (is_numeric($a)) echo "Die Variable enthält eine Zahl.";
  if (is_float($a)) echo "Die Variable enthält eine Dezimalzahl.";
  if (is_int($a)) echo "Die Variable enthält eine Ganzzahl.";
  if (is_null($a)) echo "Die Variable ist leer.";
?>

Bei der Programmierung wird man immer wieder auf Sitautionen stoßen, in denen man nicht nur den Wert einer Variable benötigt, sondern prüfen muss, ob die Variable überhaupt existiert. Dazu stehen verschiedene Funktionen mit unterschiedlichen Rückgabewerten zur Verfügung, was in der folgenden Tabelle veranschaulicht wird.

Der Wert 1 entspricht true. Kein Wert entspricht false.

$x =*nullfalsetrue01"""0""1""a"array()array(null)array(0)array(1)
echo $x10101aArrayArrayArrayArray
gettype($x)nullnullbooleanbooleanintegerintegerstringstringstringstringarrayarrayarrayarray
isset($x)111111111111
$x == null111111
$x === null11
is_null($x)11
$x1111111
!$x1111111
empty($x)1111111
is_bool($x)11
is_numeric($x)1111
is_string($x)1111
is_array($x)1111
$x == true1111111
$x === true1
$x == 1111
$x === 11

* Diese Spalte enthält die Rückgabewerte für eine nicht existente Variable. Rot hinterlegte Zellen kennzeichnen die E_NOTICE-Meldung 'Notice: Undefined variable'.


Man beachte:

Lediglich die Funktionen isset() und empty() erzeugen keine E_NOTICE-Meldung bei nicht initialisierten Variablen.

Mit isset() überprüft man, ob eine Variable einen Wert besitzt. null ist kein eigentlicher Wert, denn sonst würde gettype() für diese Variable den entsprechenden Typ zurückgeben. Dennoch kann mit null eine Variable ›ins Leben gerufen‹ werden, um E_NOTICE-Meldungen zu verhindern.

Die Verwendung von if ($x) bzw. if (!$x) zum Prüfen der (Nicht-)Existenz einer Variable ist zu vermeiden, da z. B. if ($x) auch dann false zurückgibt, wenn der Wert von $x die Zeichenkette "0" ist. Entsprechend gibt if (!$x) im gleichen Fall true zurück.

Die Funktion empty($x) entspricht im Rückgabewert der Abfrage if (!$x) bzw. stellt die Umkehrfunktion von if ($x) dar.

Die Funktion is_null() stellt die Umkehrfunktion von isset() dar, mit dem Unterschied, dass sie bei nicht initialisierten Variablen eine E_NOTICE-Meldung erzeugt.

Für Zeichenketten, die ausschließlich aus Zahlen bestehen, geben sowohl is_string() als auch is_numeric() den Wert true zurück. Dies gilt beispielsweise auch für $x = "123.456"; aber nicht für $x = "123,456"; oder $x = "123.456.789";.

Die Formulierung if ($x) entspricht if ($x == true). Um zu überprüfen, ob $x tatsächlich den Wahrheitswert true besitzt, muss aber if ($x === true) verwendet werden.

Die Formulierung if ($x == 1) ergibt auch dann true, wenn $x die Werte 1, "1" oder true besitzt. Um zu überprüfen, ob $x tatsächlich den Zahlenwert 1 besitzt, muss aber if ($x === 1) verwendet werden.