PHP 4.3

2.6.1 Der Punkt-Operator

Mit dem Zeichenkettenoperator, dem einfachen Punkt (.), kann man Strings aneinander hängen. Das heißt, dass der Ausdruck "Apfelsinen" . "kiste" die Zeichenkette "Apfelsinenkiste" zurückliefert. Dies gilt genauso für Stringwerte, die in Variablen gespeichert sind, wie beispielsweise in $var1.$var2. Auch auf Werte, die keine Strings sind, kann der Punkt-Operator angewendet werden. PHP wandelt die Operanden des Punkt-Operators in den Typ String um. Beachten Sie zum Beispiel die Werte für $menge und $preis. Sie sind vom Typ Integer bzw. Double und werden im Kontext des Punkt-Operators ausgewertet, als String interpretiert und von echo so ausgegeben.

Folgendes Beispiel veranschaulicht diese Vorgehensweise:

<?php

  $artikel = "Birne";
  $menge = 5;
  $preis = 0.99;

  // Berechnen des Preises für die Bestellung

  $zuzahlen = $menge * $preis;

  echo "Ihr Artikel ist: " . $artikel . "<br>";
  echo "Der Artikel soll " . $menge . " mal bestellt werden<br>";
  echo "Das würde bei einem Preis von " . $preis . " Euro pro Stück insgesamt " . $zuzahlen . " Euro ergeben";

?>

Browserausgabe:

  Ihr Artikel ist: Birne
  Der Artikel soll 5 mal bestellt werden
  Das würde bei einem Preis von 0.99 Euro pro Stück insgesamt 4.95 Euro ergeben

In dieser Qualifikationseinheit werden Sie häufiger auf echo-Anweisungen in Beispielskripten stoßen, in denen wir statt des Punkt-Operators Kommata einsetzen, um mehrere Ausdrücke (Zeichenketten, Werte von Variablen, usw.) angeben zu können. Diese sollten jedoch in keiner Weise mit dem Punkt-Operator oder mit Operatoren im Allgemeinen verwechselt werden. In PHP gibt es, im Gegensatz zu C und anderen von C beeinflussten Sprachen wie C++ oder Perl, keinen Komma-Operator. Kommata lassen sich in PHP nur in ganz bestimmten Konstruktionen verwenden, auf die wir im Laufe der Qualifikationseinheit noch eingehen werden. Eine von ihnen ist die echo-Anweisung. Die Bedeutung hier: Die Kommata trennen mehrere Ausdrücke, die echo alle nacheinander ausgeben soll.

  echo $a, $b, $c;

ist also nur eine Abkürzung für:

  echo $a;
  echo $b;
  echo $c; 

Der Punkt-Operator hingegen verbindet die ihn umgebenden Ausdrücke zu einer neuen Zeichenkette, die dann von echo ausgegeben wird. Der Effekt ist der gleiche, der Mechanismus aber ein ganz anderer.

Das letzte Beispiel könnte demnach auch wie folgt notiert werden:

  echo $a . $b . $c;

Folgendes Beispiel veranschaulicht diese Vorgehensweise:

<?php

  $artikel = "Birne";
  $menge = 5;
  $preis = 0.99;

  // Berechnen des Preises für die Bestellung

  $zuzahlen = $menge * $preis;

  echo "Ihr Artikel ist: ", $artikel, "<br>";
  echo "Der Artikel soll ", $menge, " mal bestellt werden<br>";
  echo "Das würde bei einem Preis von ", $preis, " Euro pro Stück insgesamt ", $zuzahlen, " Euro ergeben";

?>

Eine Besonderheit von PHP ist die Fähigkeit, Variablen innerhalb eines Strings zu erkennen und auszuwerten. Für das obige Beispiel könnte man also durchaus den Punktoperator umgehen und die Variablen innerhalb des Strings wie folgt integrieren:

  echo "Ihr Artikel ist: $artikel"; 

Durch das $-Zeichen wird $artikel tatsächlich als Variable innerhalb des Strings erkannt und mit seinem Wert ersetzt. Wie aber wird das $-Zeichen selbst innerhalb eines Strings dargestellt? Um es verwenden zu können, muss man es mit dem umgekehrten Schrägstrich (Backslash) kombinieren, womit man eine sogenannte Escapesequenz bildet, welche die Sonderbedeutung des Zeichens aufhebt. Stellen wir uns vor, wir zahlen in unserem Beispiel in Dollar, das Skript ohne Punktoperator und mit $ als Währung sähe folgendermaßen aus:

Folgendes Beispiel veranschaulicht diese Vorgehensweise:

<?php

  $artikel = "Birne";
  $menge = 5;
  $preis = 0.99;

  // Berechnen des Preises für die Bestellung

  $zuzahlen = $menge * $preis;

  echo "Ihr Artikel ist: $artikel <br>";
  echo "Der Artikel soll $menge mal bestellt werden<br>";
  echo "Das würde bei einem Preis von \$ $preis pro Stück insgesamt \$ $zuzahlen ergeben";

?>

Browserausgabe:

  Ihr Artikel ist: Birne
  Der Artikel soll 5 mal bestellt werden
  Das würde bei einem Preis von $ 0.99 pro Stück insgesamt $ 4.95 ergeben

Kommentare (0)

Ihr Kommentar

Name