Programmieren mit php und mySQL (Operatoren) - Guru 2.0
Programmieren mit php und mySQL (Operatoren)

Programmieren mit php und mySQL (Operatoren)

Bis jetzt hast Du erfahren was php überhaupt ist und wie es mit einem webServer funktioniert. Dann hast Du dich im zweiten Teil mit Variablen beschäftigt. Im diesem Teil lernst Du die Operatoren kennen. Hier gehe ich auf die wesentlichen Operatoren ein und werde einige von ihnen und auch ganze Gruppen noch weglassen. Diese werde ich dann erklären, wenn sie für ein Programmbeispiel oder einen anderen Bereich der Programmierung wichtig sind. Die Profis unter euch sind jetzt nicht verwundert, wenn zum Beispiel logische Operatoren fehlen. Sie kommen schon noch dran, keine Sorge, aber für die Anfänger ist es wesentlich leichter, nicht so viel auf einmal im Kopf halten zu müssen.

Operatoren sind eigentlich nichts anderes wie – vereinfacht gesagt – Rechenzeichen. Sie nehmen zwei oder mehr Werte, führen Berechnungen, Operationen oder Vergleiche mit diesen Werten durch und liefern ein Ergebnis zurück. Die Einteilung von Operatoren in verschiedene Gruppen kann durch verschiedene Ansätze erfolgen. Ich verwende hier einen praktischen Ansatz, und teile die Operatoren nach ihrer Verwendung ein. Aber zuerst müssen wir uns um die Reihenfolge, oder besser Hierarchie der Operatoren kümmern.

Rangordnung der Operatoren

Wir kennen den Spruch ja noch aus der Schule: Punkt vor Strich. Damit haben wir uns die Rangordnung von einfachen, mathematischen Operatoren gemerkt. Genauso ist es mit den Klammern: Zu erst die Klammern ausrechnen (von innen nach aussen), dann den Rest. Genau so eine Ordnung gibt es in jeder Programmiersprache bei den Operatoren. Hier interessiert uns die Prioritätenliste von php, obwohl ich sie für unseren Gebrauch nur eingeschränkt, also unvollständig, wiedergebe. Die Numerierung der folgenden Liste ist nicht zufällig, denn genau in der Reihenfolge rechnet php.

  1. Unitäre Operatoren (++, –)
  2. Typumwandlungen
  3. Logischer Operator “Not” (!)
  4. Arithmetische Operatoren (*, /, %)
  5. Arithmetische Operatoren (+, -, .)
  6. Vergleiche (==, ===, !=, !==)
  7. logisches Und (&&)
  8. logisches Oder (||)
  9. Zuweisung (=, +=, -=, *=, /=, .=, %=)

Diese Reihenfolge ist natürlich nur interessant, wenn mehrere Operatoren in einem Ausdruck vorkommen und wenn keine Klammersetzung erfolgt ist. Denn die Klammern verschieben die Prioritätenliste, genauso wie in der Mathematik: (5+ 1) * 3 hat als Resultat 18 und 5 + 1 * 3 liefert als Resultat 8. Klammern sind nur zwingend notwendig, wenn man die Rangordnung verändern will. Trotzdem kann man sie auch zur Besseren Lesbarkeit einsetzen, wie zum Beispiel 5 * 3 + 6 / 2 – 3 * 15 ist nicht so gut lesbar, wie (5 * 3) + (6 / 2) – (3 * 15).

Bei den folgenden Beispielen, werden am Anfang gleich verschiedenen Variablen Werte zugewiesen. Erinnere Dich an den vorherigen Abschnitt: Du darfst das Gleichheitszeichen nicht als Rechenzeichen sehen, sonderen als Pfeil nach links. Dieser Pfeil schiebt den Wert rechts in den Platzhalter links rein.

[php]
//Hierarchie der Operatoren
$a = 6;
$b = 7;
$c = 12;

$resultat = $c / $a + $b;  //Resultat: 9
$resultat = $c / ($a + $b);  //Resultat: 0,923
[/php]

Arithmetische Operatoren

Kommen wir, zur für mich, einfachsten Gruppe. Dies sind die Rechenzeichen, welche wir am Anfang unserer Schullaufbahn gelernt haben (mit einer kleinen Erweiterung).

  • Der + Operator, addiert zwei Werte
  • Der – Operator, subtrahiert zwei Werte
  • Der * Operator, multipliziert zwei Werte
  • Der / Operator, dividiert zwei Werte
  • Der % Operator, dividiert zwei Werte und gibt als Ergebnis den Rest der Division zurück

Schau Dir die folgenden Beispiele an, um ein besseres Verständnis dieser Operatoren zu erhalten.

[php]
//Rechnen mit arithmetischen Operatoren
$a = 6;
$b = 3;
$c = 4;

//Addition
$resultat = $a + $b; //Resultat: 9
$resultat = $b + $a; //Resultat: 9
$resultat = $b + $a + $c; //Resultat: 13

//Subtraktion
$resultat = $a – $b; //Resultat: 3
$resultat = $b – $a; //Resultat: -3
$resultat = $a – $b – $c; //Resultat: -1

//Multiplikation
$resultat = $a * $b; //Resultat: 18
$resultat = $b * $a; //Resultat: 18
$resultat = $c * $b * $a; //Resultat: 72

//Division
$resultat = $a / $b; //Resultat: 2
$resultat = $b / $a; //Resultat: 0,5

//Modulo
$resultat = $a % $b; //Resultat: 0 (6 dividiert durch 3, geht ohne Rest)
$resultat = $b % $a; //Resultat: 3 (3 dividiert durch 6, ist 0 und der Rest ist 3)
$resultat = $a % $c; //Resultat: 2 (6 dividiert durch 4, ist 1 und als Rest bleibt 2 über)

//Kombinationen
$resultat = $b + $a * $c + $b;   //Resultat: 30
$resultat = ($b + $a) * $c + $b;   //Resultat: 39
$resultat = ($b + $a) * ($c + $b);   //Resultat: 63
$resultat = (($b + $a) * ($c + $b)) % $c; //Resultat: 3
[/php]

Unitäre Operatoren

Die unitären Operatoren sind eigentlich nur eine verkürzte Schreibweise, für bereits bekannte Grundrechenarten. Sie werden aber gerne eingesetzt, weil der Code dadurch besser lesbar wird und Programmierer nicht so gerne tippen.

  • Der ++ Operator erhöht den Wert der Variablen um eins
  • Der — Operator vermindert den Wert der Variablen um eins

Es sind also ganz einfache mathematische Operationen. Auch hier kommt gleich ein Beispiel, da es dadurch einfach besser zu sehen ist.

[php]
//Rechnen mit unitaeren Operatoren
$a = 5;
$b = 2;

$resultat = $a + $b; //Resultat: 7;
$a++; //$a um eins erhoehen, jetzt enthaelt $a die Zahl 6
$resultat = $a + $b; //Resultat: 8;
$a–; //$a um eins vermindern, jetzt enthaelt $a die Zahl 5
$resultat = $a + $b; //Resultat: 7;

//Dasselbe nochmals in einer anderen Schreibweise
$a = 5;
$b = 2;

$resultat = $a + $b; //Resultat: 7;
$a = $a + 1; //$a um eins erhoehen, jetzt enthaelt $a die Zahl 6
$resultat = $a + $b; //Resultat: 8;
$a = $a – 1; //$a um eins vermindern, jetzt enthaelt $a die Zahl 5
$resultat = $a + $b; //Resultat: 7;[/php]

Man sieht an obigen Beispiel sehr schön, die schwerere Lesbarkeit des zweiten Beispiels. Diese Art der Operatoren, wird oft beim Zählen verwendet, wenn Du zum Beispiel die Anzahl von Kunden wissen willst, oder wieviele Tabellenzeilen Du ausgegeben hast.

Text Operator

Wie man am Titel sieht gibt es hier nur einen Operator und dies ist der Punkt. Er verknüpft zwei Strings (Text-Variablen) mit einander. Man könnte auch sagen, er “addiert” sie. Und auch hier gleich wieder ein Beispiel.

[php]
//arbeiten mit dem String-Operator
$a = "Guru";
$b = "2.0";

$resultat = $a.$b; //Resultat: "Guru2.0"
$resultat = $a." ".$b; //Resultat: "Guru 2.0"[/php]

Du kannst also mit dem Punkt zwischen zwei string-Variablen, diese miteinander verbinden. Das ist ganz praktisch, wenn Du später verschiedene Variablen und fixe Texte zu einer Ausgabe in HTML verbinden willst.

Zuweisungs Operator

Dieser Operator (das Gleichheitszeichen) ist uns ja schon im zweiten Teil und auch in diesem Teil des Kurses begegnet. Eigentlich sollte er Dir jetzt bekannt sein, aber trotzdem gibt es noch ein paar Tricks die Du noch nicht kennst. Die übliche Verwendungsweise einer Variablen einen Wert zuzuweisen ist ja bereits mehrmals gezeigt worden. Es geht aber auch, dass Du mehreren Variablen, verschiedene Werte zuweist. Das klingt jetzt eigenartig, daher ein Beispiel.

[php]
//klassische Zuweisung
$a = 3; //jetzt steht in der Variablen der Wert 3

//mehrfache Zuweisung
$a = ($b = 5) + 3; //In der Variablen $b steht der Wert 5 und in $a der Wert 8[/php]

Bei obigen Beispiel sieht man auch gut, die Priorität der Operatoren. In der Zeile 5 wird zuerst die Klammer aufgelöst und in der Folge der gesamte Term.

In der Praxis wird Dir oft folgende “Kurzschreibweise” unterkommen, wie ich schon gesagt habe: Programmierer tippen nicht gerne. Daher versuchen wir alles mögliche abzukürzen.

[php]//Kurzschreibung der Zuweisungen
$a = 5;

$a += 3; //In $a ist jetzt der Wert 8 gespeichert;
$a = $a + 3; //Diese ist die lange Version der vorherigen Zeile

$a = 5;

$a -= 2; //Jetzt steht in $a der Wert 3
$a = $a – 2; //Diese ist die lange Version der vorherigen Zeile

$a = "Hallo "; //Jetzt ist $a ein string
$a .= "Welt!"; //Jetzt steht in $a "Hallo Welt!"
$a = $a."Welt!" //Diese ist die lange Version der vorherigen Zeile[/php]

Die verkürzte Schreibweise zieht also den Rechenoperator vor das Gleichheitszeichen und lässt den Variablennamen wegfallen. Dies funktioniert natürlich nur wenn der Variablenname sich nicht ändert. Dafür kann man es aber mit jeden Rechenzeichen durchführen.

Speicherverwaltung

Beim Zuweisungsoperator bietet sich ein kleiner Ausflug in die Speicherverwaltung direkt an. Denn wenn man programmiert, sollte man schon wissen, was so in etwa im Hauptspeicher des Geräts abläuft. Besonders da Deine Applikationen ja auf einem Server ausgeführt wird und das vielleicht tausendfach gleichzeitig. Da ist es schon wichtig zu wissen welche Last Du mit deinem Programm erzeugst. Damit eine fehlerhafte (natürlich nur bei der Speicherverwaltung) Applikation nicht den ganzen webServer zum Absturz bringt, ist noch eine zusätzliche Sicherheit bei php eingebaut. In der Initialisierungsdatei php.ini ist eine maximale Obergrenze für den Speicherverbrauch eingezogen. Mit der Zeile memory_limit “8M” wird der maximale Speicherverbrauch auf 8 MByte begrenzt (bis Version 5.2.0, aber Version 5.2.0 ist der Standard 16 MByte).

Es gibt auch noch ein zweites Sicherheitsnetz gegen fehlerhafte oder schlampig programmierte Anwendungen in php. Damit eine Applikation nicht die gesamte Rechenzeit des webServers beansprucht oder unendlich lange läuft, gibt es eine Zeitgrenze, nach der das Skript automatisch abgebrochen wird. In der ini-Datei gibt es eine Zeile max_execution_time 30, diese bricht das Skript nach 30 Sekunden ab. Die verschiedensten webServer haben zusätzlich noch eigene Direktiven, nach der sie ein Skript auf jeden Fall beenden. Bei Apache und IIS (Microsoft Internet Information Server) verwenden als Standard 300 Sekunden. Falls Du einen Fehler in Deine Programmierung eingebaut hast, musst Du also maximal 5 Minuten warten, bis das Programm selbstständig abgebrochen wird.

Wie Du ja schon weist, ist eine Variable nichts anderes wie ein reservierter Platz im Hauptspeicher des Computers. Der Name der Variable ist nur eine Erleichterung für Dich als Programmierer, damit Du diesen Speicherplatz leicht wiederfindest. Jetzt ist es bei php so, das bei der ersten Verwendung der Variablen, der notwendige Platz im Speicher reserviert wird. Bis zur Version 4 war das aber bei jedem Zuweisungoperator der Fall, man spricht hier auch von “Zuweisung per Wert” (assignment by value). Das heißt, dass jedesmal neuer Speicher reserviert wurde, wenn ein Zuweisungsoperator ins Spiel kam! Dadurch konnte es im schlimmsten Fall zu einer Verlangsamung der Anwendung kommen, da einfach der Hauptspeicher voll war.

Natürlich bleibt der Speicher nicht so voll, denn sonst müsste man ja andauernd den Computer neustarten um den Speicher wieder zu initialisieren. hier kommt die sogenannte Garbage Collection ins Spiel. Diese Müllabfuhr bereinigt den Speicher von nicht mehr benötigten Werten und stellt in den Anwendungen oder dem System wieder zur Verfügung. Wie das in php dann genau abläuft und wie man sorgsam mit dem Hauptspeicher umgeht, wirst Du bei den praktischen Besipielen erfahren.

In der aktuellen Version 5 läuft dies anders. Jetzt wird die Variable nicht mehr per Wert sondern per Referenz zugewiesen (assignment by reference). Dies bedeutet, dass php sich die Adresse des Speicherplatzes merkt und diese benutzt um den Wert zu aktualisieren. Es wird also immer wieder derselbe Platz verwendet. Im Gegensatz zur Version 4, welche immer wieder einen neuen Speicherplatz gebraucht hat.

Für die Profis unter euch: Diese Art der Adressierung entspricht nicht den C-Pointern. Es sind in Tabellen organisiert symbolische Aliases. Denn in php sind ein Variablenname und dessen Wert voneinander unabhängig. Am ehesten kann man es sich wie das UNIX-Dateisystem vorstellen. Die Variablennamen sind die Verzeichniseinträge und der Inhalt ist die Datei selbst. Die Referenzen kannst Du dir jetzt wie einen Hardlink im Dateisystem vorstellen.

Mit dem dritten Teil hast Du jetzt Dein php-Wissen um Operatoren erweitert und kannst jetzt mit Variablen die verschiedensten Berechnungen anstellen. Du hast auch einen (sehr) kleinen Einblick in die Speicherverwaltung von php erhalten. Der nächste und vierte Teil wird Dir eine Entwicklungsumgebung näher bringen und das bisher gelernte in Beispielen, welche Du selbst erarbeiten wirst, näherbringen.

Information

Diese Artikelserie ist mit dem Tag phpMySQL@Kurs versehen. Damit kannst Du schnell alle Teile des Kurses finden: https://www.guru-20.info/tag/phpMySQL@Kurs

Startseite bzw. Inhaltsverzeichnis des Kurses

Es wurde ein Kommentar zu diesem Beitrag geschrieben.

  • Oliver Klee

    Super Exkurs in die Speicherverwaltung! Da hatte ich noch grobe Lücken, die sich jetzt allmählich schließen. Man lernt nie aus. 🙂

Blogheim.at Logo
Diese Website verwendet Cookies - nähere Informationen dazu finden Sie in unserer „Datenschutzerklärung“. Klicken Sie auf „Ich stimme zu“, um Cookies zu akzeptieren und unsere Webseite zu besuchen, oder klicken Sie auf „Cookie-Einstellungen“, um Ihre Cookies selbst zu verwalten.