Suche nach als

Sprachelemente

Auf dieser Seite:

Was bedeuten diese einzelnen Satzzeichen, Sternchen, Schrägstriche und Klammern in PHP? Welches sind die wichtigsten PHP Sprachelemente? Was sind Variable, Array, String, Schleifen, Funktionen und Klassen? Auch einige erste PHP Funktionen werden hier tabelarisch aufgeführt und verlinkt auf eigene Seiten, wo sie detailliert behandelt werden.

Namen in PHP

Benennung von PHP Elementen

Einzelne Zeichen

Schrägstriche, Klammern und Satzzeichen

Schrägstriche, Klammern und Satzzeichen
; jede einzelne Anweisung wird mit einem Semikolon ; abgeschlossen.
// kommentiert den Rest der Zeile aus, alles folgende auf dieser Zeile wird nicht dargestellt
# kommentiert auch den Rest der Zeile aus, alles folgende auf dieser Zeile wird nicht dargestellt

/*   */

kommentiert alles dazwischen liegende aus, über mehrere Zeilen hinweg
Kommentare sind sehr sinnvoll und sollten ausgiebig genutzt werden, damit später das Script noch nachvollzogen werden kann und die Fehlersuche erleichtert wird
Mehr zu den Kommentaren: Coding Guide
\
Maskierungszeichen, Escape-Zeichen, macht Sonderzeichen zu normalen Zeichen:

"\n"
"\t"
"\""
"\\"
"\$"
Innerhalb von doppelten Anführungszeichen:
Zeilenumbruch
Tabulator
"
\
$
." ". Mehrere Leerschläge in doppelten Anführungszeichen (als String) werden von PHP ins HTML eingefügt, aber von HTML wird nur einer angezeigt. So kann ich meinen HTML-Code, den ich per PHP schreibe, strukturieren durch Einrücken.
("\s" funktioniert nicht)

'\''
'\\'
innerhalb von einfachen Anführungszeichen nur:
'
\
< >
echo "<h2>Titel</h2>";
erzeugt HTML
in einem String
" "

entweder der Wert einer Variablen oder ein String (siehe echo).
"sowas" alles zwischen den Anführungszeichen wird wörtlich gemeint
Zahlen für Rechenoperationen dürfen nicht angeführt werden, sie werden sonst zu Zeichen!
Beim $Variablennamen in Gänsefüsschen wird deren Wert ausgegeben.
' '
Einfache Anführungszeichen sind im String auch verwendbar.
Achtung, sie ersetzen aber $VariablenNamen nicht durch ihren Wert. Also Variablen in einfachen Anführungszeichen werden nicht geparst.
Mehr zu Anführungszeichen: Strings ausgeben
( )
if ($xyz < 444) echo "string";
5 * (3 + 8)
klammert Parameter/Teilausdrücke zusammen Siehe Funktion
(Bedingungen von if-Abfragen) Siehe Kontrollen
Veränderung der Priorität von Operatoren
{ }
if ($abc == true) {
echo "string <br>";
print "string";
}
klammert Anweisungen zu einem Block zusammen
Beachten: Die Bedingung und der Anweisungsblock werden nicht mit Semikolon abgeschlossen, sondern nur die einzelnen Anweisungen.
Siehe Kontrollen und Funktion
? Anhängen einer Variablen an Link
oder als Teil eines PHP-Scripts, bei dessen Anfang <?php oder Ende ?>
oder gefolgt von einem Doppelpunkt als ein Ternärer Operator ?: (siehe unten)
& Anhängen einer zweiten und jeder weiteren Variablen an einen Link Siehe Variable an Seite
:
Alternative Schreibweise von Schleifen
an Stelle der geschweiften Klammern : für die öffnende Klammer Siehe Kontrollen
->
::
Objekt-Operator
Bereichsauflösungsoperator (siehe bei Klassen weiter unten)
=
=~
^
Zuordnungsoperator z.B. ordnet dem Namen einer Variablen einen Wert zu (siehe unten)
weiterer Operator nur in Perl; Siehe RegEx und preg_match()
Anfang eines Strings in einer Regulären Expression (RegEx)

Operatoren

Operatoren in PHP

Operatoren
  Zuweisungs- und Verkettungs- Operatoren
= Wertzuweisung zu einer Variablen
.= Punkt vor = ist Erweiterung der Variablen
Eine zuvor benannte Variable wird durch den neuen Wert ergänzt. Ohne Punkt würde der Wert der Variablen überschrieben. Siehe Variablen
=> assoziative Schlüssel zuordnen Siehe Assoziative Arrays
.
$f = $f1 . $f2;
$Adresse = $Str.", ".$Nr;
Punkt
verkettet Strings und Variablen miteinander
(In Javascript ist es das +)
,
echo "string",$string;
Komma
Aneinanderreiung: mehrere Anweisungs-Argumente trennen
  Vergleichende Operatoren (geben immer 'true' oder 'false' aus)
==
ist gleich, vergleicht nur Werte nicht die Datentypen, 10 eier == 10 birnen ist 'true'
false == 0 ist auch 'true'
!=
ist ungleich
===
ist identisch, gibt 'false' aus wenn die Datentypen nicht auch noch übereinstimmen
false === 0 ist 'false'
<=
>=
<
>
ist kleiner oder gleich
ist grösser oder gleich
ist kleiner
ist grösser
Mehr zu vergleichenden Operatoren bei Kontrollstrukturen: if, else, switch Kontrollen
  Logische Operatoren (verbinden Parameter z.B. if-Abfragen)
&&
and
und
||
or
oder
xor entweder oder (nicht beides)
! nicht
Mehr zu logischen Operatoren bei Kontrollstrukturen: if, else, switch Kontrollen
Ternärer Operator
? : Verkürzt geschriebene if-else Abfrage
  Mathematische Operatoren
+
-
*
/
%
plus
minus
multipliziert
dividiert
modolos, findet den Rest einer Division, 16 % 6 ist 4 , 16:6=2 Rest 4
Mehr zu mathematischen Operatoren: Zahlen
++
$VarX = 1;
$VarX = 1++;
echo $X;
Increment, erhöht einen Variablen-Wert um 1,


liefert die Ausgabe 2
$VarX = 1;
echo ++$X;
Achtung vorangestellt erfolgt die Erhöhung vor der Verarbeitung ...
liefert die Ausgabe 2
$VarX = 1;
echo $X++;
echo $X
... hinten angehängt erfolgt die Erhöhung erst nach der Verarbeitung!
liefert hingegen zuerst die Ausgabe 1,
erst dannach die Ausgabe 2
-- Decrement, verringert den Variablen-Wert um 1, wie oben
Mehr zu Inkrement und Dekrement: Schleifen

Datentypen

Datentypen in PHP

Datentypen
  Daten können diverse Eigenschaften haben welche einem Typ entsprechen. Z.B kann ein Wert auf 2 Stellen nach dem Komma definiert sein (double), oder als 'aus Buchstaben bestehend' (string)
string Zeichenkette. String
integer, int Ganzzahlen. Mathe
float, double, real Fliesskommazahlen
Object Ein Bild, ein Sound, ein Video, eine Funktion ...
Array Indexierte Variablenwerte
Boolean TRUE oder FALSE
Resource Resource dient dazu um Variablen zu definieren/identifizieren, die aus externen Datenquellen (Datenbanken) herangezogen werden
NULL Null ist kein Wert, entspricht auch nicht dem Wert 0 oder dem Wert LEER, bei Null ist einfach nix vorhanden
mixed gemischte Datentypen. Z.B. Strings und Zahlen gemischt
Den Typ finden und ändern
Der Datentyp wird einer Variablen eigentlich automatisch mit ihrem Wert zugewiesen
gettype($name); gibt den Datentyp der Variablen $name aus
var_dump($name); gibt nicht nur den Datentyp von Variablen (auch von Arrays und Objekten) aus, sondern auch noch deren Werte (und das ohne print Befehl).
$name = (int) $name; Durch Casting den Datentyp einer Kopie der Variablen $name (zu integer) ändern
Es kann nur in die obersten 5 Datentypen geändert werden (string bis Array).
bool zu integer
integer zu bool
Bei der Umwandlung von Boolschen Werten in die Integer Werte entsteht aus false eine 0 und aus true eine 1. Umgekehrt entsteht aus einer 0 ein false und aus jeder anderen Zahl ein true.
Will ich Rückgabewerte von Funktionen ausgeben oder wiederverwenden, kann dies zu Fehlern führen, da das echo einer 0 ein leerer String ist!

Variable

$variable in PHP

Variable
$o
$Ywert
Ein Variablenname begint konventionell immer mit einem Dollarzeichen.
Variablen sind sofort verwendbar, der Datentyp wird bei der Wertzuweisung automatisch festgelegt (nicht zuvor deklarieren)
$name = "Marcel"; Der Zuweisungsoperator des Wertes einer Variablen ist =
der Buchstabenwert kommt in Anführungszeichen daher
$name .= " Biefer"; Die selbe Variable wird durch einen Punkt vor dem = erweitert
Wert zuweisen ohne Anführungszeichen
$X = 10;
$Y = 2*$X;
Soll mit dem Variablen-Wert gerechnet werden hat er keine Anführungszeichen
$Adresse = $Str.", ".$Nr; Variablennamen müssen nicht in Anführungszeichen stehen, sie werden totzdem ausgegeben, hier steht nur das Komma (als String) in Anführungszeichen
$a = $b = 1000; mehreren Variablen wird der gleiche Wert zugewiesen
Variablen nutzen mit doppelten " " oder einfachen ' '
$mo = "Montag";
echo "Ich komme $mo zurück.";
echo 'Ich komme $mo zurück.';

Ausgabe mit " ": Ich komme Montag zurück.
Ausgabe mit ' ' ersetzen $VariablenNamen nicht durch ihren Wert:
Ich komme $mo zurück.
Ein String wird genau so ausgegeben wie getippt, wenn er in 'einfachen Anführungszeichen' steht. Das Script ist schnell, weil nicht geparst wird.
Variable oder Escape-Zeichen werden nur geparst in "doppelten Anführungszeichen".
  Variable Variablennamen
$varia="null"
$i=0;
${$varia.$i};
echo "$varia0";
$varia="eins"
$i=1;
echo "$varia1";
$varia="zwei"
$i=2;
echo "$$varia2";
Mehr zu Variablen: Variablen
  Lokale und Globale Variable
<?php
$globalevariable="Ich bin ausserhal von Funktionen nutzbar "
$globalevariable .= "und veränderbar."; // und veränderbar
Wird eine Variable ausserhalb von Funktionen, z.B gerade nach dem PHP Script-Tag definiert, ist sie zwar global gültig, aber kann noch nicht aus einer Funktionen heraus benutzt und verändert werden.
function beispiel() {
$lokalevariable="Ich bin nur in dieser Funktion gültig.";
}
Wird eine Variable in einer Funktion definiert, hat sie nur hier und jetzt Gültigkeit und kann nur hier verändert werden. Aus dieser Funktion heraus kann auch nicht ohne Weiteres auf die obige Variable zugegriffen werden ...
function DruckGlobalVar()
{
global $globalevariable;
print $globalevariable;
}

DruckGlobalVar(); // Funktion wird aufgerufen

mit dem Schlüsselwort 'global' kann eine sogenante globale Variable auch für eine Funktion globalisiert werden, sie ist dann auch aus dieser Funktion heraus nutzbar (und veränderbar!)
Mehr zu globalen Variablen: Variable mit globalem Gültigkeitsbereich
  An Link angehängte Variable
<a href="empfaenger.php?x=555&y=super!">Go</a>

if ($_GET["x"]=="555") {
echo "Variable ist angekommen, das ist ja ".$_GET["y"];
}

Variable durch Link übergeben: In einer Datei wird der href Tag mit Variablen "geimpft". Die erste mit ? alle weiteren mit &
Die empfaenger.php gibt sie durch den Superglobalen array $_GET aus.
Variable auf anderer Seite nutzen: Variable durch Link übergeben
Mit Variablen arbeiten
isset(varname); ist die Variable vorhanden?
Mehr zu Variablen: Variablen prüfen

Array

$array in PHP

Array
$bezeichnung [index] = "eintrag";

$name [schlüssel] = "wert";
In einem Array sind mehrere VariablenWerte angeordnet, die unter einem gemeinsamen $Namen zusammengefasst sind, und einzeln durch ihren Index angesprochen werden.
[ ] Wird beim Definieren des Arrays ein leerer Index angegeben, dann wird der Index automatisch in der Reihenfolge der Eingabe durchnummeriert, beginnend mit 0. Dies führt am wenigsten zu Fehlern.
$Tiere [0] = "Hahn";
$Tiere [1] = "Katze";
$Tiere [2] = "Hund";
$Tiere [3] = "Pferd";
$Tiere [4] = "Esel";
echo $Tiere [3];
Welches Tier war kein Bremer Stadtmusikant?
$Tiere = Array ("Hahn", "Katze", "Hund", "Pferd", "Esel") ;
echo $Tiere [3];
verkürzte Schreibweise mit automatischer Nummerierung.
Auch hier trägt das 4. Tier den Index 3 - weil bei 0 mit Zählen begonnen wird!
$Tiere = array (1 => "Katze", 4 => "Esel", 2 => "Hund", 3 => "Pferd", 0 => "Hahn",) ;
echo $Tiere [3];
die Indexzahl bei verkürzter Schreibweise
durch einen Pfeil => zuordnen
Mehr zu Arrays: Numerische Arrays
$Tiere ["Ha"] = "Hahn";
$Tiere ["Ka"] = "Katze";
$Tiere ["Hu"] = "Hund";
$Tiere ["Pf"] = "Pferd";
$Tiere ["Es"] = "Esel";
echo $Tiere ["Pf"];
einen assoziativen Schlüssel statt Indexzahl zuordnen
$Tiere = array ("Ka" => "Katze", "Es" => "Esel", "Hu" => "Hund", "Pf" => "Pferd", "Ha" => "Hahn",) ;
echo $Tiere ["Pf"];
assoziative Schlüssel zuordnen in verkürzter Schreibweise
$bezeichnung [index] [index] = "wert" und es gibt auch noch mehrdimensionale Arrays - die sind wie Tabellen.
mit 'Spalten' und 'Zeilen':
$Tiere ["Hu"] [0] = "Pudel"
Mehr zu Arrays: Assoziative Arrays
Mit Arrays arbeiten
isset(varname);
if (isset($_SESSION["queue_file"])) {
echo $_SESSION["queue_file"];
}
ist die Variable vorhanden?
wenn die Sessionvariable queuefile vorhanden ist, dann gib sie aus
(manche Befehle wie exec() erzeugen einen fatalen ERROR, wenn eine Variable nicht vorhanden ist, mit der sie etwas tun sollten.)
print_r($Arrayname);
<pre>print_r($Arrayname);</pre>
$string=print_r($Arrayname, true);
untersucht einen Array (oder auch eine Funktion) und gibt dessen Struktur aus. In <pre>-Tags gesetzt bleibt die Struktur im Browser übersichtlich.
Die Ausgabe kann in eine Variable umgeleitet werden, folgt als zweites Argument TRUE, wird ein String daraus
array_push($Arrayname,"Wert","Wert"); Einträge am Ende hinzufügen
array_pop($Arrayname); Eintrag am Ende wegnehmen
array_unshift($Arrayname,"Wert","Wert"); Einträge am Anfang hinzufügen
array_shift($Arrayname); Eintrag am Anfang wegnehmen
array_search("Wert", $Arrayname); Array durchsuchen, Wert finden
in_array("Wert",$Arayname); Eintrag, abfragen
count($Arrayname);
sizeof($Arrayname);
Einträge zählen
Version aus C++
end($Arrayname); gibt das letzte Element des Arrays zurück
list() weist die einzelnen Einträge eines Arrays zu bestimmenden Variablen zu
each() gibt immer den aktuellen Eintrag (Schlüssel-Wert-Paar) eines Arrays zurück und rückt den Zeiger um 1 weiter zum nächsten Eintrag. zum Schrittweisen durchgehen eines Arrays
reset() rückt den Zeiger an den Anfang des Arrays, damit dieser erneut mit each() durchgegangen werden kann
foreach()
Schleife zum Durchlaufen eines Arrays, Siehe Array assoziativ
Arrays sortieren
asort($Arrayname);
arsort($Arrayname);
Einträge sortieren nach Einträgen - aufsteigend oder absteigend
'r' steht für rückwärts
ksort($Arrayname);
krsort($Arrayname);
Einträge sortieren nach Indexes - aufsteigend oder absteigend
'k' steht für key
sort ($Arrayname, SORT_REGULAR);
sort ($Arrayname, SORT_NUMERIC);
sort ($Arrayname, SORT_STRING);
rsort(dito);
Sortiert auch: normal
nach Zahlenwert
alphbetisch
alles auch absteigend

Superglobale Variablen

$_SUPERGLOBAL in PHP

Superglobale Variablen
echo "$Feldname"; Formular Eingabe als Variable übergeben: Ein HTML Formular mit method = "get" oder method = "post" empfängt eine Eingabe des Users und übergibt diese als Feldname in einem Array an eine PHP-Datei <form action="datei.php" ...> welche die Eingabe ausgibt.
Früher wurde der Feldname (je nach php.ini register_globals 'yes') automatisch zu einer globalen Variablen und stand ohne weiteres so zur Verfügung als $Feldnahme.
$_GET["Feldname"];
$_POST["Feldname"];
$_REQUEST[];
Aus Sicherheitsgründen muss jetzt der Array eingelesen werden. Wenn nicht bekannt ist, ob das Formular mit HTTP-Methode 'get' oder 'post' verschickt wurde oder ob die Variable gar aus einem Cookie stammt, dann liest 'Request' alle drei Variablenübermittlungsarten. Wird kein Variablenname abgefragt [ ] lehre Klammern, dann stehen alle Variablen des Arrays zur Verfügung.
$Feldname = $_POST["Feldname"];
echo "$Feldname";
zur Ausgabe der Variablen $Feldname muss der Array also jetzt vorher eingelesen worden sein
echo $_POST["Feldname"]; oder grad wärend dessen Ausgabe einlesen
$HTTP_GET_VARS['Feldname'];
veraltete (lange) Form des Einlesens
vor PHP 4.1.0
Mehr: zu GET, POST und REQUEST
$_SERVER[];
vom Server zur Verfügung gestellte Variablen
$_SERVER['DOCUMENT_ROOT'] Lokaler Pfad des Webservers zum Hauptverzeichnis
<a href="<?php echo $_SERVER['PHP_SELF'] ?>">Dieses Skript</a> Ein Link der auf sich selber verweist (relativer Pfad vom Documentroot zum aktuellen Script)
<form action="<?php echo $_SERVER['PHP_SELF']; ?>"> Affenformular: An Stelle einer Ziel-Datei kann das Formular seine eigene Adresse bestimmen und sich somit selbst aufrufen und also selbst verarbeiten. Das Formular wird mit den letzten Eingaben dargestellt.
Formular mit Selbstbezug
Formular für Sprachwechsel
$_SERVER['QUERY_STRING']

<a href="empfaenger.php?x=555&y=super!">Go</a>

enthält den Query-String, also das, was einem Link hinter dem Fragezeichen mitgegeben wurde:

x=555&y=super!

Mehr zu $_SERVER: Pfadangaben
$_ENV[]; Variablen die von der Shell-Umgebung gesetzt wurden
ENV = environement ~ Umgebung
$_FILES["varname"]; Informationen über hochgeladene Datei: Bild hochladen
$GLOBALS[]; ALLE mit dem aktuellen Script verbundenen global gültigen Variablen, auch die nicht selbst erstellten superglobalen Variablen.
Mehr zu Superglobalen: Superglobale Variablen

Konstante

KONSTANTE in PHP

Konstante
define("KONSTANTENNAME", "Wert");
define("KONSTANTENNAME", "Wert",true);
Das Gegenteil von Variablen sind Konstanten, ihre Definition garantiert, dass sie immer nur den einen unveränderlichen Wert haben. KONSTANTENNAMEN werden traditionell immer gross geschrieben, wird als 3. Argument 'true' notiert, kommt es nicht mehr drauf an (fördert aber Fehler).
define("ICH", "Marcel");
print "Hallo ".ICH;
Eine Konstante muss mit einem String verkettet werden, denn in Anführungszeichen würde sich die Konstante nicht vom String unterscheiden.
Mehr über Konstante: Konstante
  Magische Konstanten
Es gibt 5 magische Konstanten. Konstanten enthalten normalerweise immer das selbe, die magischen auch, aber variabel in Abhängigkeit ihres Ortes.
__LINE__
Zeilennummer des AKTUELLEN scriptes der mit include() eingebundenen Datei oder des laufenden Scripts
__FILE__
Pfad und Dateinamen der mit include() eingebundenen Datei oder des laufenden Scripts. Dies ist identisch mit: $SERVER['DOCUMENT_ROOT'].$_SERVER['PHP_SELF']
__FUNCTION__
__CLASS__
__METHOD__
namen der aktuellen Funktion (ab php 4.3.0)
namen der aktuellen Klasse (ab php 4.3.0)
namen der aktuellen Klassenmethode (ab php 5)
echo ">>> ".basename(__FILE__)." ist der Name in welcher die magische Konstante steht."; Beispiel
Mehr über Konstante: Magische Konstante

Werte

get_defined_*()

Überblick über definierte Werte
  Alle innerhalb des Zugriffsbereichs des Scriptes gültigen Variablen, Konstanten und Funktionen. dazu gehören die benutzerdefinierten Werte, aber auch die oben beschriebenen Superglobalen Variablen.
get_defined_vars() Variablen:
<?php print_r(get_defined_vars()); ?>
oder etwas strukturierter:
<?php
printf("<pre>\n%s</pre>\n", print_r(get_defined_vars(), true));
echo "<pre>\n";
var_dump(get_defined_vars());
echo "</pre>\n"; ?>

Ich verzichte hier auf die schier endlose Ausgabe.
<?php
$allvars = get_defined_vars();
// nur eventuelle Kommandozeilenparameter ausgegeben
print_r($allvars["argv"]);
?>
get_defined_constants() Konstanten
get_defined_functions() Funktionen

Cookie und Session

Cookie und Session in PHP

Cookie und Session
Cookie Ein Cookie (eigentlich eine Variable mit Wert) wird auf der Festplatte des Users gespeichert, im Browser können Cookies erlaubt oder verboten werden. Ein nicht gelöschtes und nicht abgelaufenes Cookie kann bei einem erneuten Seitenbesuch des Users wieder reaktiviert werden.
setcookie ("cookieName",$zuspeichernderWert,$endeGueltigkeit); Ein Cookie schreiben
$cookieNamen=$_COOKIE[cookieNamen];
echo $cookieNamen;
Eine Cookievariable lesen Kurz- bzw. neue Form (PHP 5)
zur Ausgabe der Variablen $cookieNamen muss der Array vorher eingelesen worden sein
$HTTP_COOKIE_VARS[cookieNamen]; Eine Cookievariable lesen in veralteter Form (PHP 4)
Mehr zu Cookies: Cookie
Alternative zu Cookie:
Session
Falls das Speichern von Cookies durch den Browser verhindert wird, können auch versteckte Formular-Felder zum Transport von Variablen verwendet werden; die bleiben jedoch nicht erhalten:
<input type = 'hidden' name = '<?php session_name(); ?> value = '<?php session_id(); ?>'>
Session Eine Session (Sitzung) wird auf dem Server gespeichert. Ich kann damit einzelne User voneinander unterscheiden und deren Variablen zwischenspeichern (z.B. Loggin, Wahrenkorb, etc.)
session_start(); Eine Session fortsetzen oder beginnen. Dies muss vor jeglicher Ausgabe im Browser auf jeder neuen Seite geschehen!
session_id(); gibt den 32Bit Schlüssel zurück. Die Session bleibt solange erhalten, bis der Browser geschlossen wird, solange bleibt auch die id die selbe.
session_save_path(); Gibt einen alternativen Speicherort für eine laufende Session auf dem Server an, überschreibt die Direktive in der Datei php.ini.
session_name(); Die Session wird benannt und kann so nachverfolgt werden.
$_SESSION['Variablename'] = "Variablenwert";
$Variablename = $_SESSION['Variablename']
echo "$Variablename";
So liest man eine Sessionvariable ein, der Wert einer so registrierten Variablen wird global und bleibt auch für Scripts auf anderen Seiten erhalten und einsetzbar.
unset($_SESSION['Variablename']); Löschen einer SitzungsVariablen wie jede andere Variable.
$_SESSION = array(); Löschen alle SitzungsVariablen durch überschreiben mit einem leeren Array.
session_destroy(); beendet die Session auch ohne dass der Browser geschlossen werden muss
session_register("Variablenname"); Veraltete Art eine Sessionvariable als global zu registrieren.
session_unregister("Variablenname"); Auch veraltet. Löscht SitzungsVariable aus Arbeitsumgebung
Mehr zu Sessions: Session In Kombination mit einem Loginformular.

Bedingungen und Schleifen

Bedingungen und Schleifen in PHP

Bedingungen und Schleifen
  if (gibt 'true' oder 'false' zurück)
<?php
if(Bedingung)
{
Anweisung;
}
?>
Wenn die Bedingung TRUE ist, wird die Anweisung ausgeführt.
Bei nur einer Anweisung kann der Block - die geschweiften Klammern - auch weggelassen werden.
Es ist möglich, nach dem ersten if einfach ein zeites if anzuhängen und dann ein drittes, etc., aber am Ende kann nicht mehr einfach ein else für die noch ungeprüften Fälle angehängt werden, denn das else bezieht sich nur auf das letzte if. Es müssten alle vorherigen Bedingungen aller if-Abfragen in einem letzten if noch einmal negativ abgefragt werden, etwa so: wenn nicht das und das und das, dann. (siehe elseif)
if - else
<?php
if(Bedingung)
{
Anweisung;
}
else
{
Anweisung;
}
?>
Wenn die if-Bedingung TRUE ist, wird die Anweisung ausgeführt, ist sie FALSE (nicht erfüllt), wird die else - Anweisung ausgeführt.
Bei else muss es für die Anweisung auch immer geschweifte Klammern haben!
  elseif auch else if
<?php
if(Bedingung)
{
Anweisung;
}
elseif
{
Anweisung;
}
else
{
Anweisung;
}
?>
beliebig vielen if Abfragen kann so ein einfaches else folgen! (siehe if)
  if Abfrage mit Operatoren: und oder
if (Gleichung1 Operator Gleichung2) {Anweisung} Als Operator kommen and bzw. ++ (und), or bzw. || (oder) in Frage (siehe oben Operatoren).
if ($var1 == 'x' and $var1 != 'y') {echo $var1;} In der einen runden Klammer stehen alle Bedingungen.
  switch mit break
<?php
switch ($Variable)
{
case Fall 1:
Anweisung 1;
break;
case Fall 2:
Anweisung 2;
break;
case Fall 3:
Anweisung 3;
break;
default: Anweisung 4;
}
?>
Ein switch-Block kann statt mehrfachen if-Verzweigungen eingesetzt werden.
Beachte die Doppelpunkte!
  ein break nach mehreren Bedingungen wirkt wie oder in der abfrage
<?php
switch ($Variable)
{
case Fall 1:
case Fall 2:
case Fall 3:
Anweisung 1;
break;
case Fall 4:
Anweisung 2;
break;
default: Anweisung 3;
}
?>
  goto Label
<?php
$count = 0;
Sprungmarke2:
$count = $count+1;
if (10 > $count)
{
goto Sprungmarke2;
}
?>
Irgendwo im Code wird ein Label benannt, welches durch einen Doppelpunkt gekennzeichnet ist. Die if-Abfrage prüft, ob eine Bedingung gegeben ist und folgt dann der Anweisung, zum Label zu springen. Das Label hat nur bei seiner Deklaration einen Doppelpunkt, in der Anweisung nicht.
Das Label kann oberhalb wie unterhalb der Anweisung stehen.

Durch goto kann ich tief verschachtelte if-Abfragen vermeiden und aus Sackgassen raus finden oder Ersatz while-Schleifen basteln.
goto gilt bei manchen Gurus als schlechter Stil, der zu Spaghetti-Code verleitet.
Mehr if, else und switch Kontrolle
  while-Schleife
<?php
$i = 0;
while ($i < 10)
{
echo "$i<br>\n";
++$i
}
?>
Die while-Schleife prüft zuerst ob die Bedingung erfüllt ist, bevor sie die Anweisung ausführt. Ist die Bedingung nicht erfüllt, macht sie gar nichts.
Wichtig: Innerhalb des Anweisungsblockes muss eine Veränderung der Ausgangsvariablen statt finden, sonst wird die Schlaufe endlos!
  do - while-Schleife
<?php
$i = 50;
do
{
echo "$i<br>\n";
--$i
} while ($i > 10);
?>
Die do-while-Schleife befolgt zuerst die Anweisung bedingungslos und prüft erst danach, ob die Bedingung für einen weiteren Durchgang erfüllt ist. Also einmal tut sie es mindestens.




Semikolon nicht vergessen.
  for-Schleife
<?php
for (Startwert; Bedingung; Veränderer) {
Anweisung;
}
?>
mehrere Bedingungen für eine Anweisung
<?php
$Wert = 10;
for ( ; $Wert <20; $Wert++) {
Anweisung;
}
?>
Die for-Schleife wird nur verwendet, um etwas abzuzählen, um etwas so und so oft getan zu haben.
Zur Simulation, als ob $Wert aus einer Benutzereingabe stammt, wurde er ausserhalb der Klammer initialisiert. Auch einen der anderen Ausdrücke kann man leer lassen, wenn die Semikolon nicht vergessen werden.
  for-Schleife mit break
<?php
for (Startwert; Bedingung; Veränderer) {

if (Bedingung2) {
break;
}
Anweisung;
}
?>

sicherheitshalber wäre eine 'if'-Bedingung mit 'break'-Anweisung einzubauen, um eine Endlosschleife zu vermeiden.
  foreach-Schleife (zum Arrays abarbeiten)
<?php
foreach($Arrayname as $Index => $Wert)
{
echo $Index," ist ", $Wert, "<br>";
}
?>
Die foreach-Schleife durchläuftfür jeden Eintrag eines Arrays eine Schleife, in der eine provisorische Variable kreiert wird, welche im nächsten Durchgang vom nächsten Eintrag überschrieben wird. Der Anweisungsblock innerhalb der Schleife beinhaltet z.B. einen Ausgabebefehl für die Variable. Somit kann eine Liste aller Einträge eines Arrays erstellt werden.
  Schleifen unterbrechen
break;
die Schleife und der Anweisungsblock werden verlassen
continue; die aktuelle Schleife wird abgebrochen aber die nächste Schleife eingeleitet, wie überspringen dieses Durchlaufs
  ternärer Operator
is_file( $file )?"":"k" ternärer Operator
  alternative Schreibweise
<?php
if (Bedingung):
Anweisungen;
endif;
?>
an Stelle der geschweiften Klammern kann für die öffnende Klammer ein Doppelpunkt gesetzt werden und für die schliessende Klammer je nach dem endif, endswitch, endwhile, endfor, endforeach gesetzt werden.
Mehr über Schleifen: Schleife

Funktionen

Funktion() in PHP

Funktionen
  Vorgegebene Funktionen in PHP
  Funktionen werden wie Baumaschinen zum Abarbeiten wiederkehrender Aufgaben in einem Script verwendet.
In PHP sind unzählige Funktionen vordefiniert, der Funktionsumfang ist enorm. PHP ist eigentlich eine Sammlung von Funktionen (PersonalHomePage Tools).
funktionsname("diesverwende","evmodus"); Die Funktionen rufe ich (zur Arbeit) auf, indem ich ihren Namen nenne.
Der Name der Funktion steht immer vor einem Klammerpaar, darin sind Argumente angegeben, durch Kommas getrennt, z.B. worauf die Funktion angewendet werden soll, und ev. wie sie angewendet werden soll.
Was die in PHP vordefinierten Funktionen genau machen, ist in keinem Anweisungsblock ersichtlich und was für Argumente eine Funktion erwartet muss man auch wissen oder in der umfangreichen Funktionsreferenz nachlesen.
$auffang=funktion("Argument");
return $auffang;
Wird die Funktion von einer Variablen aufgerufen, kann man das Resultat der Variablen übergeben.
@funktion(); Das @ vor dem Funktionsaufruf verhindert die Ausgabe einer Fehlermeldung
  Eigene Funktionen erstellen
  Es ist auch möglich eigene Funktionen zu erstellen (z.B. am Anfang eines Scripts oder sogar in einer externen Bibliothek). Einmal definiert, sind auch diese eigenen Funktionen beliebig oft durch ihren Namen aufrufbar.
Was die Funktion mit den Argumenten tut, wird in einem Anweisungsblock { in geschweiften Klammern } vorher bestimmt.

Die runden Klammern müssen nach dem Funktionsnamen() auch dann notiert werden, wenn die Funktion keine Argumente benötigt. In den Klammern wird das Argument übernommen, welches beim Funktionsaufruf mitgegeben wurde, der Argumentname dient innerhalb der Funktion als Variable für den übergebenen Wert.

Funktionen können ineinander verschachtelt werden, indem eine zweite Funktion in einem Anweisungsblock aufgerufen wird.

Wenn eine Funktion endet, kann sie einen Wert an den aufrufenden Code zurücksenden.
function Funktionsname($arg1, $arg2)

{
Anweisung1 verarbeitet z.B. $arg1;
$variableX = Resultat der Anweisung2;
return $variableX;
}
Also zusammenfassend: Definition der eigenen Funktion durch das Schlüsselwort function und die Benennung
(Variablennamen für Argumente festlegen)
{
Funktionsanweisungsblöcke;
return-Wert definieren;
}
  Funktion aufrufen
$VariableY = Funktionsname("Wert1", "Wert2"); Aufruf der Funktion durch Funktionsname($Arg);
(in der Klammer die Argumente übergebenen, maximal soviele, wie in der Funktion vorgesehen) Die Variable vor dem Aufruf empfängt den Rückgabewert der Funktion.
Mehr zu Funktionen: Funktion

Klassen und Objekte

class Klasse und new Object in PHP

Klassen und Objekte
  Was ist eine Klasse?
class Klassenname {...} Eine Klasse ist wie eine Vorlage zur Erstellung von Objekten. Die Klasse beinhaltet Variablen und Funktionen welche die Eigenschaften und die Methoden der Objekte ausmachen.
class SheriffSternFabrik
{
  public $color; // ohne Vorgabe
  public $size = "medium"; // mit Vorgabe
  private $rang;
  protected $points;
  public function funktionsname($empf)
  {
    $this->rang = $empf;
  }
}
Eine Klasse wird mit dem Schlüsselwort class deklariert.

In der Klasse werden Variablen und Funktionen erstellt.
Die Variablen können bereits mit Werten vorbelegt werden, aber nur mit Zahlen, Strings, Boolean Werten oder Arrays, nicht mit Funktionen.

Die Sichtbarkeit bzw. der Zugriff auf die Variablen (Eigenschaften) und auf die Funktionen (Methoden) in der Klasse von ausserhalb der Klasse, kann durch 'public' oder 'private' und 'protected' erlaubt oder verboten und eingeschränkt werden.
  Was ist ein Objekt?
  Ein Objekt ist eine Instanz einer Klasse.
$Objektname = new Klassenname;
Zum Beispiel:
$Petersstern = new Sheriffsternfabrik;
Durch die Anweisung 'new' wird aus einer Klasse ein 'Objekt' instantiiert.
  Zugriff auf Objekt mit Objekt-Operator   ->
$Petersstern->color = "blau"; // färbt blau ein
echo $Petersstern->color; // gibt 'blau' aus
public
Im angegebenen $Objekt greift der Operator -> auf public Eigenschaften und Methoden() zu.
  In der Klasse: mit Pseudovariable $this auf das Objekt verweisen.
$this->points = 5; private
'private' schützt vor dem Zugriff von ausserhalb der Klasse. Auf diese Eigenschaften und Methoden kann also nur innerhalb der Klasse zugegriffen werden.
  protected
Auf 'protected' Eigenschaften und Methoden kann doch noch auch via vererbter Klassen zugegriffen werden.
  Konstruktor und Destruktor
function __construct() {...} Ein Konstruktor (innerhalb der Klasse) beeinflusst das Objekt bei seiner Entstehung, er muss nicht aufgerufen werden und verarbeitet übergebene Werte (z.B. belegt eine Eigenschaft ID).
function __destruct() {...} Ein Destruktor (auch in der Klasse deponiert) wirkt sich bei der Vernichtung also der End-Phase im Lebenszyklus eines Objektes aus. Der Destruktor schliesst z.B. eine Datenbankverbindung (am Ende des Scripts).
  Klasse erweitern
class neueklasse() extends alteklasse();
Zum Beispiel:
class Weihnachtssternfabrik() extends Sheriffsternfabrik();
Eine neue Klasse kann aufbauend auf einer alten Klasse erzeugt werden. Die neue Klasse erbt die Eigenschaften und Methoden der alten und wird mit zusätzlichen ausgestattet.
Zum Beispiel benötigt ein Weihnachtsstern einen 'Schweiffff' und vor dem Namen den Prefix 'Sankt' oder 'Santa'.
altekleasse::eigenschaft alteklasse::methode() Zugriff auf eine Eigenschaft oder Methode der Elternklasse (alteklasse) mit den doppelten Doppelpunkten (Bereichsauflösungs-Operator).
Mehr zur Klasse Ein Klasse Beispiel: Beispiel einer Klasse
Beispiel einer Klasse um Datei-Infos anzuzeigen.
PHP hat auch eigene Klassen mit eigenen Eigenschaften und Methoden, z.B. >> DateTime().

Header

Header in PHP

Header
  Kommunikation zwischen Server (Script) und Browser
header()
header_info.php
Der Server schickt Informationen (einen Header) zwecks Vorverständigung an den Browser, wann immer er etwas ausliefert, diese stehen ganz am Anfang der Lieferung (darum heisst das Header). Ich kann aber auch absichtlich einen Header überschreiben.
Das funktioniert nur, wenn noch keine Lieferung an den Browser stattgefunden hat, wenn also der Header nicht bereits gesendet wurde! (nicht einmal ein Leerschlag darf ausgegeben worden sein).
Zurückhalten
ob_start()
ob_end_flush()
Damit keine Ausgabe stattfindet, bevor ich willentlich die Lieferung versende, kann ich das 'Output Buffering' benutzen. Einzelne Teile werden gepuffert (zurückgehalten) bis ich alles zusammengetragen habe und das in einem Rutsch absende (runterspühlen). Dazu verwende ich die Methoden ob_start() und ob_end_flush().
Es gibt auch die Konfigurationsdirektive 'output_buffering', die in der php.ini bzw. in den Server-Konfigurationsdateien auf 'On' gesetzt werden könnte.
Statusmeldung header("HTTP/1.0 404 Not Found"); // Statusmeldung
Cache unterbinden header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // muss in der Vergangenheit liegen
Sensible Daten wie Passwörter oder Kreditkartennummern sollten/dürfen nicht zwischen gespeichert werden.
Das Cache Verhalten sollte mittels einer Session gesteuert werden: session_cache_limiter()
Browser umleiten
Redirect form
<?php
header("Location: http://www.example.com/"); // absolute URI
exit;
?>
'exit' stellt sicher, dass der nachfolgende Code nicht ausgefuehrt wird!
Eine Session-ID wird nicht mit dem Location-Header übermittelt, sie muss also durch die Konstante SID hinzugefügt werden.
Download zum Speichern anbieten // eine PDF Datei ausgeben:
header('Content-type: application/pdf');
// neuen Namen vorschlagen:
header('Content-Disposition: attachment; filename="downloaded.pdf"');
// original Namen nennen:
readfile('original.pdf');
Headers zeigen
headers_list()
headers_sent()

headers_list() gibt ein numerisch indiziertes Array der Header zurück, die gesendet werden.
headers_sent() zeigt an, ob diese Header bereits gesendet wurden.

String ausgeben

"string" in PHP

String
echo "Ausgabe"; echo gibt den in Anführungszeichen gefassten String auf dem Bildschirm aus.
Dies ist eigentlich keine Funktion, und kommt ohne Parameter oder Konditionen aus und kann ohne Klammer genutzt werden.
echo "String <p>"; HTML-Code kann einfach innerhalb des Strings verwendet werden.
echo "Hallo \"Lehrling\""; Der Backslash Maskiert PHP-Sonderzeichen in einem String ab. Soll etwas in Anführungszeichen ausgegeben werden, dann muss die besondere Bedeutung von " zuerst so \" ungültig gemacht werden. Die Ausgabe ist: Hallo "Lehrling"
echo "c:\\Programme\\xampp\\
php_sammlung\\echos.php";
Auch der Backslash selber kann ausgegeben werden,
\\ wird so \ ausgegeben
(alles in einer Zeile!)
echo "bla<br>\n"; erzeugt einen Zeilenumbruch im Source-Code
echo "$name";
echo '$name';
Doppelte Anführungszeichen geben den Wert der Variablen aus
Einfache Anführungszeichen geben den Variablennamen aus (ungeparst)
print "Ausgabe"; gleich wie echo, gibt aber nicht nur Text aus, sondern gibt an eine aufrufende Variable einen String zurück
Mehr zur Textausgabe: Textketten ausgeben
Mit HereDoc längere Texte ausgeben
printf()
printf ("%s", 123);
printf ("%.2f", 123);
erzeugt formatierte Daten - bestimt den Datentyp, meisst für Zahlen
gibt aus: 123
gibt aus: 123.00
sprintf()
dito und liefert auch noch einen String zurück
String Funktionen
trim(); ltrim(); rtrim();
stripslashes(); addslashes();
strip_tags();
strtoupper(); strtolower(); ucwords();
entfernt alle whitespaces vor und/oder nach dem Sting Text säubern
Backslasches werden löscht oder eingefügt
entfernt unerwünschte HTML-Tags
wandelt in GROSS/klein/Gross- Kleinschreibung um
nl2br();
Zeilenumbrüche in einer PHP Variablen (\n) in HTML konvertieren (NewLineToBRake). Diese Funktion funktioniert ev. nur vor, nicht mehr nach stripslashes(); Textumbruch
wordwrap(); Wandelt eine lange Zeile in eine Spalte um. Die Spaltenbreite in Zeichen und die Art der Umbruchzeichen können angegeben werden.
strstr($String, "Teilstring"); Filehandler geht dort hin, wo ein Teilstring (Wortlaut) in einem String aufgefunden wird. Gibt String ab dort zurück.
substr(); Filehandler geht dort hin, wo er nach Massangabe (in Anzahl Zeichen) geschickt wird. Gibt String ab dort zurück.
str_replace();
substr_replace();
strtr(in,ausA,machO);
suchen und ersetzen (Wortlaut)
suchen und ersetzen (Massangabe)
einzelne Zeichen
strtok();
explode();
zerlegen eines Strings nach Zeichen, gibt Worte zurück
nach einem Wort, gibt Array zurück
void Funktion ohne Rückgabewert
und mehr!!! Suchen und Ersetzen im String
Reguläre Ausdrücke
zur Bearbeitung von Strings, brauchen etwas mehr Zeit zum geparst werden
preg_match("/hates/","hierdrinn"); Regulärer Ausdruck in einem Sting oder Array suchen
preg_replace("replacepattern, replacemit, replacein"); Regulärer Ausdruck suchen und ersetzen
preg_split("spliterer, daszusplitende"); Mit einem Regulären Ausdruck einen String zerlegen
ereg_replace("suche","ersetze",in$variable) String in einer Variablen suchen und ersetzen (siehe str_replace() weiter oben). Seit PHP 5.3 ist alles mit e-beginnend veraltet und sollte nicht mehr verwendet werden, stattdessen sind die mit p-beginnenden Funktionen zu verwenden, welche mit Pearl-kompatiblen RegEx arbeiten.
Reguläre Expressions
Serialisieren in PHP
serialize() Wandelt Variablen, Arrays, Funktionen und überhaupt PHP Code in einen String um. Der String kann dann in eine Datei gespeichert werden.
file_put_contents("navSerial.php", serialize($navArray)); Serialisieren ist sehr geeignet zum Auslagern einer Navigation in Form eines Arrays.
$navArray = unserialize(file_get_contents('navSerial.php')); wieder unserialisieren und einlesen des serialisierten Arrays.
$datei = fopen("navSerial.php","w");
fputs($datei,serialize($navArray));
fclose($datei);
eine etwas altmodischere Variante, zum Speichern in einer Datei
$navArray = unserialize(implode('', file('navSerial.php'))); und die dazugehörige altmodischere Variante, zum Einzulesen einer Datei
$file=fopen("navSerial.php","w");
for ($idx=0;$idxfputs($file,$navArray . "n");
fclose($file);
auch das zeilenweise hineinschreiben eines numerischen Array geht komplizierter ohne serialize()
$navArray=file("navSerial.php"); wo hingegen das zeilenweise holen einer Datei in einen Array einfach ist.

Dateien

Datei schreiben in PHP

dateien
require ("dateipfadname"); greift auf eine Datei zu, bei Fehler wir das Script gestoppt.
So können Scripts (z.B. zentral gelagerte Pfadangaben, Variable und vor allem Funktionen) aus externen Bibliotheken vollständig eingebunden werden.
Beim Einbinden einer zweiten Datei, wird diese dort einfach angehängt, die zweite Datei überschreibt nichts so, als würde auf eine andere Seite gewechselt).
Enthält die eingebundene Datei allerdings Variablen gleichen Namens wie in der einbindenden Datei vorher schon vorhanden waren, gelten die neuen Variablen.
Am Anfang und Ende der eingebundenen Datei müssen PHP-Tags stehen, sonst wird der Inhalt auch ohne echo-Befehl auf dem Browser ausgegeben!
include ("dateipfadname"); Genau wie 'require', aber bei Fehlern wir das Script weiter geparst, es könnten einander mehrere Fehlermeldungen folgen.
Mehr include()/require() Datei importieren
  aus/in externen Dateien lesen/schreiben
file_exists("pfadFilename") Existiert dieses File? Gibt TRUE oder FALSE zurück
File Info
$fp = fopen ("pfadFilename","modus");
Um in eine Datei schreiben zu können, muss sie erst geöffnet oder sogar erstellt werden.
In einer Variablen wird das zu bearbeitende File, der Bearbeitungs-Modus und die Cursorposition automatisch gespeichert. Nennen wir die Variable '$fh' den Filehandler oder '$fp' den Filepointer.
Per Modus werden wichtige Parameter gesetzt:
  • Je nach Mode kann der Versuch eine nicht existierende Datei zu öffnen, eine neue Datei erstellen oder scheitern.
  • Je nach Mode kann eine Datei nur gelesen werden oder wird sie überschrieben!
  • Je nach Mode wird die Cursorposition an den Anfang oder ans Ende der Datei gesetzt.
  • Je nach Mode wird der Dateiinhalt zuerst mal gelöscht.
Es stehen folgende Modi zur Verfügung:
a, a+, c, c+, r, r+, w, w+, x, x+

Die Modi werden tabellarisch auf der Seite Datei lesen verglichen,
deren Auswirkungen werden im Detail auf der Seite Datei erstellen, ergänzen beschrieben.
Achtung: Die Dateien welche beschrieben werden -oder bei neu zu erstellender Datei, der Ordner in den die Datei geschrieben wird-, müssen immer gechmodet werden!
fgets ($f, anzahlzeichen);
zeilenweise wo wird wieviel gelesen
fwrite ($f, "String");
wo wird was geschrieben
fputs($f,"String"); wo wird was geschrieben
feof($f) Wurde das Ende der Datei erreicht? Ist die Cursorposition am EndOfFile?
rewind ($f);
Cursor an den Dateianfang setzen
fclose ($fh); Die Datei in welcher der Filehandler steht muss immer geschlossen werden.
Mehr über Datei lesen/schreiben Lesen und schreiben
unlink("Dateiname.end"); löscht die Datei

 


Valid XHTML 1.0 Check den Code.

Intro: >> <<
Ich bin hier: > PHP Lehrling >> Sprachelemente
 
HTML · CSS · JavaScript · PHP und MySQL · Andere
Letzter Update: 26.10.2016