Wahrheitswerte kombinieren

Bislang haben wir innerhalb der Bedingung nur für einen Wert geprüft, ob der Wert wahr oder falsch ist. Doch man kann mehrere Wahrheitswerte kombinieren:

AND (&&)

Häufig ist eine Bedingung von zwei Werten abhängig, also nur wenn beide Werte WAHR sind, ist die Bedingung erfüllt. Ein gutes Beispiel ist ein Kommentarsystem. Du möchtest deinen Benutzern erlauben, auf deiner Seite Kommentare zu schreiben, aber nur wenn der Benutzer seinen Namen und eine Email-Adresse angibt.

<?php
	$name = "Klaus";
	$email = "klaus63552@fakemail.de";

	if($name != '')
	{
		if($email != '')
		{
			echo 'Dein Kommentar wurde gespeichert';
		}
	}
?>

Hier siehst du erstmal, dass man Bedingungen auch ineinander verschachteln kann, also erst wird geprüft, ob der Benutzer einen Namen eingegeben und danach ob er auch eine EMail Adresse angegeben hat. Wenn beide Bedingungen wahr sind, wird der Kommentar gespeichert. Das kann man aber auch kürzer schreiben:

<?php
	$name = "Klaus";
	$email = "klaus63552@fakemail.de";

	if(($name != '') && ($email != ''))
	{
		echo 'Dein Kommentar wurde gespeichert';
	}
?>

Das &&-Zeichen steht für AND und heißt soviel wie, die erste Bedingung muss wahr ergeben und die zweite Bedingung ebenfalls, damit der gesamte Ausdruck wahr ist. Also, dass „if“-Statement möchte nur einen Wert aus der Klammer erhalten, WAHR oder FALSCH. Wir können aber innerhalb der Klammer mehrere Wahrheitswerte kombinieren und mit dem &&-Operator sagen, dass alle Bedingungen wahr sein sollen.

OR (||)

Zusätzlich zum &&-Operator gibt es noch den ||-Operator, den ODER-Operator. Dieser sagt, dass nur eine Bedingung wahr sein muss, damit der gesamte Ausdruck wahr ist. Wenn wir obiges Beispiel ein wenig anpassen:

<?php
	$name = "Klaus";
	$email = "";

	if(($name != '') || ($email != ''))
	{
		echo 'Dein Kommentar wurde gespeichert';
	}
?>

Jetzt reicht es schon, wenn der Besucher entweder seinen Namen angibt oder seine Email-Adressen. Er kann aber auch weiterhin beides angeben, damit das if-Statement wahr ist. Der einzige Fall wo es nicht klappt ist, wenn er weder den Namen, noch die Email Adresse angibt.

Drei und mehr Bedingungen kombinieren

Natürlich ist man nicht auf zwei Bedingungen beschränkt, man kann soviele Bedingungen miteinander kombinieren wie man mag:

<?php
	if(($wert1 != 0) && ($wert2 > 100) && ($wert2 <= 200))
	{
		//WAHR, nur wenn alle 3 Bedingungen wahr sind
	}
?>
<?php
	if(($wert1 != 0) || ($wert2 > 100) || ($wert2 <= 200))
	{
		//WAHR, wenn einer der 3 Bedingungen wahr sind
	}
?>
<?php
	if((($wert1 != 0) || ($wert2 > 100)) && ($wert2 <= 200))
	{
		//WAHR, wenn entweder Bedingung 1 oder Bedingung 2 wahr ist UND Bedingung 3 wahr ist
		//bei solchen Konstruktionen auf die Klammersetzung achten!
	}
?>
<?php
	if((($wert1 != 0) && ($wert2 > 100)) || ($wert2 <= 200))
	{
		//WAHR, wenn entweder Bedingung 1 und Bedingung 2 wahr sind ODER Bedingung 3 wahr ist
		//bei solchen Konstruktionen auf die Klammersetzung achten!
	}
?>

Fazit

Dies ist das Kombinieren von Wahrheitswerten. Als Ergebnis erhält man immer nur WAHR oder FALSCH doch kann man dadurch mehrere Fälle zusammen abfragen. Umso mehr Bedingungen man miteinander kombiniert, desto komplexer wird die Abfrage und damit schwerer für andere zu verstehen. Daher macht es manchmal Sinn auf die Kombination von Wahrheitswerten zu verzichten und stattdessen die einzelnen Abfragen in if-Verschachtelungen abzufragen.

hier geht's weiter...



Kommentare


Hallo Christian,

nachdem ich ja schon Dein WordPress-Theme-Tutorial durchgearbeitet habe, sitze ich nun am PHP-Tutorial – auch für dieses bin ich Dir sehr dankbar! Super, dass Du Dir all diese Arbeit machst!

Im Abschnitt über "Wahrheitswerte kombinieren" erhalte ich allerdings folgende Fehlermeldung bei der Ausgabe:

Parse error: sytay error, unexpected T_IF in /Applications/MAMP/htdocs/phptutorial/index.php on line 5

Code ist in diesem Beipiel folgender:

Aber auch die anderen Beispiele funktionieren nicht. Kannst Du mir das erklären? Das wäre prima.

Herzliche Grüße

Katrin


Hallo Katrin,

leider hat mein WordPress deinen Quellcode geschluckt. Der Fehler den du angibst läßt darauf schließen, dass in der vorigen Zeile ein Fehler aufgetreten ist, wahrscheinlich durch ein fehlendes Semikolon.


Hallo Christian,

ja, Du hast recht – mit Semikolon funktioniert der Quellcode. Das Semikolon fehlt auch oben in Deinem Quelltext – vielleicht magst Du das in Deinen Beispielen noch beheben?

Danke für die Antwort!

Viele Grüße

Katrin


Oh ja, du hast recht :) Fehler behoben!


Halli Hallo,

ich möchte mich erst einmal für dieses Umfangreiche Tutorial bedanken.

Ich hab da eine Frage zu den letzten 2 Beispielen:

müssten die Klammern nicht so aussehen (wie im 4. und 3. Bsp von unten), und wenn nein, warum nicht?

if(($wert1 != 0) && ($wert2 > 100) || ($wert2 <= 200))</strong>

Liebe Grüße

Selman


Hallo Selman,

du hast recht, die zusätzlichen Klammern sind nicht nötig um das gewünschte Ergebnis zu erzielen. Ich für meinen Teil finde es aber übersichtlicher, wenn die einzelnen Blöcke nochmal in Klammern zusammengefasst sind.

Freut mich, dass dir das Tutorial gefällt :)

Beste Grüße,

Chris

Kommentar schreiben

Kommentar

Hilfe:

<strong>fettgedruckt</strong> => fettgedruckt

<em>kursiv</em> => kursiv

<a href="http://wordpress.lernenhoch2.de">Link</a> => Link

[code]<?php echo 'hello world'; ?>[/code]

*

Feedback Formular