EMZETT.
Login

Kurz: var_dump(5 <=> 3, “a” <=> “b”, [1, 2] <=> [1, 3]); // Spaceship: -1, 0, 1 var_dump(true && false, true || false, !true, true xor true); var_dump(5 & 3, 5 | 3, 5 ^ 3, ~5, 1 << 4, 256 >> 2);

Teil des Kurses PHP

Kapitel 3 von 15 im Kurs PHP. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

Operatoren

<?php
echo 7 + 2, " ", 7 - 2, " ", 7 * 2, " ", 7 / 2, " ", 7 % 3, " ", 2 ** 8, " ", intdiv(7, 2), "\n";
$x = 10; $x += 5; $x -= 3; $x *= 2; $x /= 4; $x .= "!";
echo $x, "\n";
$i = 5; echo $i++, " ", ++$i, " ", $i--, " ", --$i, "\n";
 
var_dump(5 <=> 3, "a" <=> "b", [1, 2] <=> [1, 3]);       // Spaceship: -1, 0, 1
var_dump(true && false, true || false, !true, true xor true);
var_dump(5 & 3, 5 | 3, 5 ^ 3, ~5, 1 << 4, 256 >> 2);
 
echo true ? "ja" : "nein", "\n";                  // ternär
echo null ?: "Elvis", "\n";                       // kurze Form: erster truthy Wert
echo null ?? "Coalesce", "\n";

Ausgabe:

9 5 14 3.5 1 256 3
6!
5 7 7 5
int(1)
int(-1)
int(-1)
bool(false)
bool(true)
bool(false)
bool(false)
int(1)
int(7)
int(6)
int(-6)
int(16)
int(64)
ja
Elvis
Coalesce
OperatorBedeutung
+ - * / % **Rechnen (% Rest, ** Potenz)
.Strings verketten
== != === !==Gleichheit (strikt: ===)
< <= > >= <=>Vergleich, Spaceship
&& || ! (and or xor)Logik
?? ?: ? :Null-Coalescing, Elvis, ternär
instanceofTypprüfung bei Objekten

Strings

<?php
$name = "Mia";
$alter = 17;
echo "Name: $name, Alter: {$alter}\n";           // Interpolation
echo 'Roh: $name\n', "\n";                         // einfache Quotes: nichts ersetzt
echo "Tab:\tZeilenumbruch:\\nAnführung: \"x\" Unicode: \u{1F600}\n";
echo "Summe: " . ($alter + 1) . "\n";             // Verketten mit .
 
$mehrzeilig = <<<TEXT
Hallo $name,
du bist $alter Jahre alt.
  Einrückung bleibt relativ.
TEXT;
echo $mehrzeilig, "\n";
 
echo <<<'ROH'
Nowdoc: $name wird nicht ersetzt
ROH;
echo "\n";

Ausgabe:

Name: Mia, Alter: 17
Roh: $name\n
Tab:	Zeilenumbruch:\nAnführung: "x" Unicode: 😀
Summe: 18
Hallo Mia,
du bist 17 Jahre alt.
  Einrückung bleibt relativ.
Nowdoc: $name wird nicht ersetzt

Wichtige String-Funktionen

<?php
$s = "  Hallo Welt  ";
echo strlen($s), "|", trim($s), "|", ltrim($s), "|", rtrim($s), "|\n";
echo strtoupper("abc"), strtolower("ABC"), ucfirst("mia"), ucwords("max muster"), "\n";
echo str_replace("Welt", "PHP", "Hallo Welt"), " ", substr("Datenbank", 0, 5), " ", substr("Datenbank", -4), "\n";
var_dump(strpos("Hallo", "l"), strrpos("Hallo", "l"), strpos("Hallo", "x"), str_contains("Hallo", "all"), str_starts_with("Hallo", "Ha"), str_ends_with("Hallo", "lo"));
echo str_repeat("=", 10), " ", strrev("abc"), " ", str_pad("7", 3, "0", STR_PAD_LEFT), " ", wordwrap("Ein langer Satz hier", 10, "\n", true), "\n";
print_r(explode(",", "a,b,c"));
echo implode(" | ", ["x", "y", "z"]), "\n";
echo number_format(1234567.891, 2, ",", "."), " ", nl2br("a\nb"), " ", htmlspecialchars("<b>\"x\"</b>"), "\n";
print_r(str_split("abcdef", 2));
echo similar_text("Hallo", "Hello"), " ", levenshtein("kitten", "sitting"), " ", ucfirst(strrev("dlrow")), "\n";

Ausgabe:

14|Hallo Welt|Hallo Welt  |  Hallo Welt|
ABCabcMiaMax Muster
Hallo PHP Daten bank
int(2)
int(3)
bool(false)
bool(true)
bool(true)
bool(true)
========== cba 007 Ein langer
Satz hier
Array
(
    [0] => a
    [1] => b
    [2] => c
)
x | y | z
1.234.567,89 a<br />
b &lt;b&gt;&quot;x&quot;&lt;/b&gt;
Array
(
    [0] => ab
    [1] => cd
    [2] => ef
)
4 3 World

Unicode und Multibyte

strlen zählt Bytes. Für UTF-8-Text nutze die mb_-Funktionen:

<?php
$text = "Grüße";
echo strlen($text), " ", mb_strlen($text), " ", mb_strtoupper($text), " ", mb_substr($text, 0, 3), " ", mb_str_pad("ä", 3, "-") ?? '', "\n";

Ausgabe:

7 5 GRÜSSE Grü ä--

Hinweis

mb_str_pad gibt es erst ab PHP 8.3; auf älteren Versionen nutzt du str_pad mit Vorsicht bei Umlauten.

Formatieren mit sprintf

PlatzhalterBedeutung
%s %d %fText, Ganzzahl, Kommazahl
%05dauf 5 Stellen mit Nullen füllen
%.2fzwei Nachkommastellen
%10s / %-10srechts- / linksbündig
%b %x %X %obinär, hex, oktal
%1$s %2$s %1$snummerierte Argumente
<?php
printf("%s ist %d Jahre alt (%.1f m)\n", "Mia", 17, 1.68);
printf("[%5d] [%-5d] [%05d] [%x] [%b]\n", 42, 42, 42, 255, 5);
printf("%2\$s %1\$s %2\$s\n", "a", "b");
echo date("Y-m-d", 0), " ", date("D, d M Y", 86400 * 365), "\n";

Ausgabe:

Mia ist 17 Jahre alt (1.7 m)
[   42] [42   ] [00042] [ff] [101]
b a b
1970-01-01 Fri, 01 Jan 1971

Merke

  • . verkettet Strings, {$var} interpoliert, Heredoc für mehrzeiligen Text
  • <=>, ??, ?: sind praktische Operatoren
  • Wichtige Funktionen: strlen, substr, str_replace, strpos, explode, implode, trim
  • str_contains, str_starts_with, str_ends_with seit PHP 8
  • Für UTF-8: mb_strlen, mb_substr, mb_strtoupper
  • printf/sprintf für Formatierung

Übungsaufgabe

Zerlege den Satz “PHP macht Spaß” in Wörter, gib jedes Wort mit Länge aus und füge sie in Großbuchstaben wieder zusammen.

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: Variablen und Datentypen

Weiter: Kontrollfluss: if, match, Schleifen

Alle Kapitel: PHP im Überblick