Vergleichsoperatoren

Bislang können wir nur Werte direkt miteinander vergleichen, also hat die Variable “zahl” den Wert “10″ oder hat die Variable “name” den Wert “Max”. Doch häufig reicht das nicht aus und man möchte z.b. wissen, ob die Variable einen Wert größer 10 hat oder einen Wert der zwischen 100 und 200 liegt. Dafür gibt es dann weitere Vergleichsoperatoren:

  • $a == $b – prüft ob beide Werte gleich sind
  • $a != $b – prüft ob die Werte ungleich sind
  • $a < $b – prüft ob der linke Wert kleiner als der rechte Wert ist
  • $a > $b – prüft ob der linke Wert größer als der rechte Wert ist
  • $a <= $b – prüft ob der linke Wert kleiner oder gleich ist vom rechten Wert
  • $a >= $b – prüft ob der linke Wert größer oder gleich ist vom rechten Wert
  • $a <> $b – prüft ob die Werte ungleich sind (funktioniert genau wie $a != $b )
  • $a === $b – prüft ob beide Werte gleich sind und ob beide vom selben Typ sind
  • $a !== $b – prüft ob die Werte ungleich sind und ob beide einen unterschiedlichen Typ haben

Quelle

$a == $b

Das doppelte Gleichheitszeichen kennst du schon, damit können wir zwei Werte vergleichen, und wenn sie den gleichen Wert haben, dann ist der Ausdruck wahr.

Beispiele:

<?php
	if(5 == 5)
		echo 'Der Ausdruck ist wahr';
?>
<?php
	$a = 5;

	if($a == 5)
		echo 'Der Ausdruck ist wahr';
?>
<?php
	$a = 5;
	$b = 5;

	if($a == $b)
		echo 'Der Ausdruck ist wahr';
?>

$a != $b

Das Gegenteil vom doppelten Gleichheitszeichen, prüft ob die beiden Werte ungleich sind. Wenn beide Werte ungleich sind, ist der Ausdruck wahr

Beispiele:

<?php
	if(5 != 4)
		echo 'Der Ausdruck ist wahr, denn 5 ist ungleich 4';
?>
<?php
	$a = 5;

	if($a != 4)
		echo 'Der Ausdruck ist wahr, denn 5 ist ungleich 4';
?>

$a < $b

Ist der Wert der Variable “a” kleiner als der Wert der Variable “b”, dann ist der Ausdruck wahr.

<?php
	$a = 5;

	if($a < 10)
		echo 'Der Ausdruck ist wahr, denn 5 ist kleiner 10';
?>
<?php
	$a = 5;

	if($a < 6)
		echo 'Der Ausdruck ist wahr, denn 5 ist kleiner 6';
?>

$a > $b

Ist der Wert der Variable “a” größer als der Wert der Variable “b”, dann ist der Ausdruck wahr.

<?php
	$a = 5;

	if($a > 4)
		echo 'Der Ausdruck ist wahr, denn 5 ist größer 4';
?>

$a <= $b

Ist der Wert der Variable “a” kleiner oder gleich als der Wert der Variable “b”, dann ist der Ausdruck wahr.

<?php
	$a = 3;

	if($a <= 4)
		echo 'Der Ausdruck ist wahr, denn 3 ist kleiner 4';
?>
<?php
	$a = 5;

	if($a <= 5)
		echo 'Der Ausdruck ist wahr, denn 5 ist gleich 5';
?>

$a >= $b

Ist der Wert der Variable “a” größer oder gleich als der Wert der Variable “b”, dann ist der Ausdruck wahr.

<?php
	$a = 5;

	if($a >= 4)
		echo 'Der Ausdruck ist wahr, denn 5 ist größer 4';
?>
<?php
	$a = 5;

	if($a >= 5)
		echo 'Der Ausdruck ist wahr, denn 5 ist gleich 5';
?>

$a <> $b

Ist der Wert der Variable “a” ungleich dem Wert der Variable “b”, dann ist der Ausdruck wahr. Genau wie der Ausdruck $a != $b

<?php
	$a = 5;

	if($a <> 4)
		echo 'Der Ausdruck ist wahr, denn 5 ist ungleich 4';
?>
<?php
	$a = 10;
	$b = 1;

	if($a <> $b)
		echo 'Der Ausdruck ist wahr, denn 10 ist ungleich 1';
?>

$a === $b

Das dreifache Gleichheitszeichen funktioniert wie das doppelte Gleichheitszeichen und prüft den Wert beider Variablen. Doch zusätzlich prüft das dreifache Gleichheitszeichen noch, ob die beiden Variablen vom gleichen Typ sind. Dazu ein Beispiel:

<?php
	$a = 0;
	if($a == false)
		echo 'Der Ausdruck ist wahr, denn der Wert 0 ist gleich false';
?>

Der Ausdruck in obigem Beispiel ergibt wahr denn der Wert integer Wert “0″ ist gleich dem boolischen Wert “false”. Der Ausdruck in folgendem Beispiel hingegen funktioniert nicht:

<?php
	$a = 0;
	if($a === false)
		echo 'Dieses "echo" wird nicht ausgeführt.';
?>

Der Ausdruck ist falsch, denn auch wenn die Werte “0″ und “false” gleich sind, so sind die beiden Typen Integer (0) und Boolean (false) ungleich.

$a !== $b

Geprüft wird, ob die Werte der beiden Variablen unterschiedlich sind und ob die Variablen einen unterschiedlichen Typen haben.

<?php
	$a = 0;
	if($a !== false)
		echo 'Der Ausdruck ist wahr, denn der Wert "0" ist zwar gleich "false", aber die beiden Typen Integer und Boolean sind unterschiedlich.';
?>

hier geht's weiter...



Kommentare


Ich habe etwas an der Definition von $a !== $b auszusetzen:

Ich zitiere:

$a !== $b – prüft ob die Werte ungleich sind und ob beide einen unterschiedlichen Typ haben

Stören tue ich mich an dem "und". Den laut des Beispiels (ich zitiere ein weiteres Mal):

$a !== $b

Geprüft wird, ob die Werte der beiden Variablen unterschiedlich sind oder ob die Variablen einen unterschiedlichen Typen haben.

view source

print?

1

(Zitat Ende)

müsste da ein "oder" stehen.

Entweder, ich habe das falsch verstanden oder entweder die Definition oder das Beispiel ist falsch.

Mit freundlichen Grüßen

Roan W.


Du hast recht, da gehört ebenfalls ein "und" hin. Normalerweise reicht ja die Vergleichsform "!=", doch möchte man auch den Typ vergleichen, muss man diese Form nutzen.


hier ist glaube ich ein Fehler drin:

1 <?php

2 $a = 5;

3

4 if($a

stimmt wohl nicht, zumindest sollte da das echo nicht ausgegeben werden, da der Ausdruck nicht wahr ist.

Schließlich wird eine Zahl kleiner oder gleich 4 gesucht.


hmm … da ist in meinem letzten Kommentar wohl was kaputt gegangen … wie kann ich denn hier die PHP-Anweisung richtig darstellen ??

Also gemeint war in dem Beitrag die oben die Erklärung zu $a <= $b, in der es einen Fehler gibt.

–nuub


@Nadine: Danke für den Hinweis, ich werde den Fehler beheben. Zusätzlich werde ich ein paar Formatierungsmöglichkeiten für Kommentare angeben, damit Quellcode im Kommentar richtig dargestellt wird.


kleiner Test:

&lt;?php

echo 'test';

?&gt;


kleiner Test:

&lt;?php

echo 'test';

?&gt;


&lt;?php echo 'hello world'; ?&gt;

&lt;?php echo 'hello world'; ?&gt;

<strong>Test</strong>

Huhu,
ich habe heute erst angefangen, mich hier auf der Seite mal umzugucken und bin mir nicht sicher ob das jetzt einfach nur ein Verständnisfehler ist, aber:

Ist bei $a !== $b nur entscheidend, dass es 2 unterschiedliche Typen sind, damit das echo ausgegeben wird?
Sind die Werte hier bedeutungslos? Denn eigentlich dürfte das Echo doch garnicht ausgegeben werden weil 0 und false den gleichen Wert haben.

Wird also nur geprüft ob die Typen der verglichenen Werte unterschiedlich sind?


Nein, in diesem Fall muss der Wert übereinstimmen UND der Typ :)

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