SELFPHP

SELFPHP-Druckversion
Original Adresse dieser Seite:
http://www.selfphp.de/praxisbuch/praxisbuchseite.php?site=113&group=24
© 2001-2017 E-Mail SELFPHP OHG, info@selfphp.de
© 2005-2017 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de


Zuweisungsoperator


Wie Sie bereits im Abschnitt zu den Variablen gesehen haben, wird in PHP (=) dazu verwendet, um einer Variablen einen Wert zuzuweisen.

Beispiel

$vorname = "Matze";

Auch wenn man eine solche PHP-Zeile nicht als Ausdruck ansieht, der ausgewertet werden kann und einen Wert hat, handelt es sich doch wirklich um einen Ausdruck. Technisch gesehen ist (=) ein Operator. Der Operator (=) erwartet als linken Operanden eine Variable. Als rechter Operand wird ein beliebiger Wert eines beliebigen Typs erwartet. Der Wert eines Zuweisungsausdrucks ist der Wert des rechten Operanden. Da (=) als Operator definiert ist, kann er auch als Bestandteil komplexerer Ausdrücke verwendet werden.

Beispiel

$zahlEins = 200;
$zahlZwei = 250;
$pruefen = zahlEins == zahlZwei; // Ergebnis: false

Hinweis: Wenn Sie so etwas verwenden wollen, sollte Ihnen vorher der Unterschied zwischen den Operatoren (=) und (==) vollkommen klar sein.

Der Zuweisungsoperator ist von rechts nach links assoziativ, das bedeutet, dass bei mehreren Zuweisungsoperatoren innerhalb eines einzigen Ausdrucks von rechts nach links ausgewertet wird. Als Folge davon kann man Code wie den folgenden schreiben, um mehreren Variablen jeweils denselben Wert zuzuweisen.

Beispiel

// Initialisierung mehrerer Variablen in einem Ausdruck
$i = $j = $k = 100;


Zuweisung mit Operation

Neben dem Zuweisungsoperator (=) unterstützt PHP noch eine Reihe weiterer Zuweisungsoperatoren, die eine Kurzform bzw. Kurznotation dafür darstellen, dass eine Zuweisung mit einer anderen Operation verbunden wird.

Beispiel

// Initialisierung
$preis = 10.00;
$mwst = 1.60;
// Kurzform
$preis += $mwst; // Ergebnis: 11.6
// Gleichbedeutend
$preis = $preis + $mwst // Ergebnis: 11.6

Entsprechend gibt es auch -=, *=, /=, %= usw.

Beispiel

// Initialisierung
$zahlEins = 50;
$zahlZwei = 25;

// Kurzformen
$zahlEins += $zahlZwei; // Ergebnis: 75
$zahlEins -= 5; // Ergebnis: 70
$zahlEins *= 2; // Ergebnis: 140
$zahlZwei /= 5; // Ergebnis: 5
$zahlZwei %= 2; // Ergebnis: 1

Abschließend eine Übersicht über die Zuweisungsoperatoren in PHP.{PSP}
OperatorBezeichnungBedeutung
=Einfache Zuweisung$a = $b weist $a den Wert von $b zu und liefert $b als Rückgabewert.
+=Additionszuweisung$a += $b weist $a den Wert von $a + $b zu und liefert $a + $b als Rückgabewert.
-=Subtraktionszuweisung$a -= $b weist $a den Wert von $a – $b zu und liefert $a – $b als Rückgabewert.
*=Multiplikationszuweisung$a *= $b weist $a den Wert von $a * $b zu und liefert $a * $b als Rückgabewert.
%=Modulozuweisung$a %= $b weist $a den Wert von $a % $b zu und liefert $a % $b als Rückgabewert.
/=Divisionszuweisung$a /= $b weist $a den Wert von $a / $b zu und liefert $a / $b als Rückgabewert.
.=Zeichenkettenzuweisung$a .= $b weist $a den Wert von $a . $b zu und liefert $a . $b als Rückgabewert.


Zuweisung »by reference«

Im Zusammenhang mit Zuweisungen ist noch ein wichtiger Punkt zu beachten:

Bei den bisher betrachteten Zuweisungen wird der Wert einer Variablen einer anderen Variablen zugewiesen. Es existieren also zwei unterschiedliche Variablen und somit auch zwei unterschiedliche Speicherbereiche, die nach der erfolgten Zuweisung zwar denselben Wert aufweisen, aber ansonsten völlig unabhängig voneinander im Arbeitsspeicher existieren. Diese Zuweisungsart wird auch als Zuweisung »by value« bezeichnet.

Seit PHP 4 steht Ihnen jedoch noch eine weitere Form der Zuweisung zur Verfügung, bei der nach erfolgter Zuweisung beide Variablen auf denselben Speicherbereich verweisen. In diesem Zusammenhang spricht man auch von Zuweisungen »by reference«. Wenn Sie Zuweisungen »by reference« vornehmen, weisen Sie also nicht einer Variablen den Wert einer anderen zu, sondern einer Variablen den Speicherbereich einer anderen, sodass im Ergebnis jetzt beide Variablen auf denselben Speicherbereich verweisen und somit nur noch eine Variable existiert, die allerdings zwei unterschiedliche Variablennamen besitzt.

Beispiel

<?
$vorname = "Matthias";
$meinname = &$vorname;
// Ausgabe – Matthias
echo $meinname;
// Ausgabe – Matthias
echo $vorname;
$vorname = "Caroline";
// Ausgabe – Caroline
echo $meinname;
// Ausgabe – Caroline
echo $vorname;
$meinname = "Gülten";
// Ausgabe – Gülten
echo $meinname;
// Ausgabe – Gülten
echo $vorname;
?>

OperatorBezeichnungBedeutung
$a = &$bZuweisung »by reference«Der Speicherbereich der Variablen $a wird auf den Speicherbereich der Variablen $b gesetzt.