Vergleichsoperatoren
Die Zahl 1 entspricht dem String '1'.
Die Zahl 1 und der String '1' sind nicht gleich.
if(1 == "1")
{
echo "Die Zahl 1 entspricht dem String '1'.";
}
else
{
echo "Die Zahl 1 und der String '1' sind nicht gleich.";
}
echo (1 === "1")?"Die Zahl 1 entspricht dem String '1'.":"Die Zahl 1 und der String '1' sind nicht gleich.";
2 Erkenntnisse:
1) Der Vergleich kann mit if/else oder mit ?/: erfolgen
2) Operator '= =' sagt der Vergleich entspricht aber nicht ganz. '= = =' ist der Vergleich identisch (auch der Datentyp)
Weitere Operatoren:
!= (<>) Verschieden oder !== nicht identisch, < kleiner als, > grösser als, <= kleiner als oder gleich, >= grösser als oder gleich
Verkettungen:
|| (or ) oder, && (and ) und, (xor) nur einer ist true, (!) nicht
Spaceship-Operator <=>
Ausgabe ist nicht true oder false sondern -1 wenn ist kleiner, 0 wenn ist gleich, 1 wenn ist grösser. Den Sinn habe ich nicht verstanden.
3 <=> 5 : 1
3 <=> 3 : 0
3 <=> 1 : -1
$a = 3;
echo "$a <=> 5 : " . ($a <=> 1);
echo "<br>$a <=> 3 : " . ($a <=> 3);
echo "<br>$a <=> 1 : " . ($a <=> 5);
Zeichenketten vergleichen mit Operatoren
string(9) "Bergkette"
string(4) "Berg"
$a == $b : Sind verschieden
$a == 'Bergkette' : Ist gleich
$a === 'Bergkette' : Ist gleich
$a <> $b : Sind verschieden
$a <> 'Bergkette' : Ist gleich
Zeichenketten Vergleichs-Funktion strcasecmp
Rückgabewert: = 0 Die strings sind gleich (caseinsensitiv) sonst: < 0 erster String kommt alphabetisch vor dem zweiten, > 0 umgekehrt. Die Zahl gibt den Längeunterschied oder die Position im Alfabet an???
string(9) "Bergkette"
string(3) "Ber"
strcasecmp($a, $b) : 6
strcasecmp($a, 'bergkette') : 0
strcasecmp($a, 'Bergkette') : 0
strcasecmp($a, 'Zahlkette') : -24
strcasecmp('Zahlkette', $a) : 24
Zeichenketten Vergleichs-Funktion strcmp
Rückgabewert: = 0 Die strings sind gleich sonst: < 0 erster String kommt alphabetisch vor dem zweiten, > 0 umgekehrt. Die Zahl gibt den Längeunterschied oder die Position im Alfabet an???
string(9) "Bergkette"
string(3) "Ber"
strcmp($a, $b) : 6
strcmp($b, $a) : -6
strcmp($a, 'bergkette') : -32
strcmp($a, 'Bergkette') : 0
strcmp($a, 'Zahlkette') : -24
strcmp('Zahlkette', $a) : 24
Zeichenketten Vergleichs-Funktion strcoll
Rückgabewert: = 0 Die strings sind gleich sonst: < 0 erster String kommt alphabetisch vor dem zweiten, > 0 umgekehrt. Wie strcmp() aber die Höhe des Rückgabewerts ist verschieden... warum weiss ich nicht
string(9) "Bergkette"
string(3) "Ber"
strcoll($a, $b) : 103
strcoll($b, $a) : -103
strcoll($a, 'bergkette') : -32
strcoll($a, 'Bergkette') : 0
strcoll($a, 'Zahlkette') : -24
strcoll('Zahlkette', $a) : 24
Zeichenketten Vergleichs-Funktion levenshtein
Rückgabewert: = Zeigt an wieviele Anpassungen gebraucht werden um die zwei Strings aneinander anzupassen
weitere 3 Parameter erlauben eine Gewichtung (sonst immer 1) fürs Ergänzen, Ändern oder Löschen
string(9) "Bergkette"
string(3) "Ber"
levenshtein($a, $b) : 6
levenshtein($b, $a) : 6
levenshtein($a, 'bergkette') : 1
levenshtein($a, 'Bergkette') : 0
levenshtein($a, 'Zahlkette') : 4
levenshtein('Bahlkette', $a) : 3
Zeichenketten Vergleichs-Funktion similar_text
Rückgabewert: = Errechnet eine Zahl, die aussagt wie stark sich die Strings gleichen, ein optionalse drittes Argument wird mit der Prozentzahl gefüllt
string(9) "Bergkette"
string(3) "Ber"
similar_text($a, $b, $prozent) : 3 (50%)
similar_text($b, $a, $prozent) : 3 (50%)
similar_text($a, 'bergkette', $prozent) : 8 (88.888888888889%)
similar_text($a, 'Bergkette', $prozent) : 9 (100%)
similar_text($a, 'Zahlkette', $prozent) : 5 (55.555555555556%)
similar_text('Bahlkette', $a, $prozent) : 6 (66.666666666667%)
Zeichenketten Vergleichs-Funktion stristr(wo, was[,true]) oder strstr
Rückgabewert: = bin etwas überfordert.....https://www.php.net/manual/de/function.stristr.php darum besser das nächste strpos
string(9) "Bergkette"
string(3) "Ber"
stristr($a, $b) : Bergkette
stristr($b, $a) :
stristr($a, 'bergketten') :
stristr($a, 'Bergketten') :
stristr($a, 'Zahlketten') :
stristr('Bahlkette', $a) :
Zeichenketten Such-Funktion stripos(wo, was[,abposition]) oder strpos
Auch "str_contains(wo,was)" das aber 'bloss' true oder false zurückgibt ob was in wo gefunden wurde
Rückgabewert: = Gibt das erste Auftreten des was in wo zurück (strpos ist casesensitiv), sonst false
strrpos 'dagegen' gibt das letzte auftreten aus. strripos ist caseinsensitiv
string(9) "Bergkette"
string(3) "Ber"
stripos($a, $b) : 0
stripos($b, $a) :
stripos($a, 'kette') : 4
stripos($a, 'kette') : 4
stripos($a, 'Zahlkette') :
stripos('Bahlkette', $a) :
Weitere Zeichenketten Vergleichs/Such/Bearbeitungs-Funktionen
strrchr(wo,zch[,teil]) rest : gibt den Reststring ab den letzten Auftreten von zch, oder false
string(9) "Bergkette"
strrchr($a, 't') : te
strrchr($a, 'e') : e
strrchr($a, 'z') :
strchr(wo,zch[,teil]) rest : gibt den Reststring ab den ersten Auftreten von zch, oder false
string(9) "Bergkette"
strchr($a, 't') : tte
strchr($a, 'e') : ergkette
strchr($a, 'z') :
strrev(str) gibt den str umgekehrt zurück
string(9) "Bergkette"
strrev($a) : ettekgreB
strrev('ein neger mit gazelle zagt im regen nie') : ein neger mi tgaz ellezag tim regen nie
strrev(1234) : 4321addcslashes
addcslashes(str) Ergänzt Zeichen in einem String mit backslash. Bringt aber nicht viel
$a lautet eigentlich: "Ein <TAG> und eine Variable $VAR"
string(28) "Ein und eine Variable "
addcslashes($a,'<') : Ein \ und eine Variable
addcslashes($a,'$') : Ein und eine Variable
addcslashes($a,'$<') : Ein \ und eine Variable
Die Sammlung aller Stringfunktionen birgt einige Überreschungen, und verdient es auprobiert zu werden
Seite bearbeiten https://www.php.net/manual/de/language.operators.php