PHP und Python sind beide dynamische, interpretierte Sprachen, aber sie sind für unterschiedliche Aufgaben entstanden. PHP wurde für das Web gemacht: Jede Anfrage führt eine .php-Datei aus, die eine Seite ausgibt, und PHP steckt hinter WordPress und Laravel. Python ist eine Allzwecksprache: Es betreibt auch Websites (Django, Flask) und ist der Standard für Data Science, Skripte und Machine Learning. Für eine Website oder einen WordPress-Job ist PHP der direkte Weg; für fast alles andere ist Python die häufigere Wahl.
Am schnellsten vergleicht man sie mit demselben Programm in beiden Sprachen. Hier ist ein kleines Skript in PHP, das du ausführen kannst:
Und dasselbe Programm in Python:
scores = {"Ada": 92, "Linus": 78, "Grace": 85}
for name, score in scores.items():
grade = "pass" if score >= 80 else "retry"
print(f"{name}: {score} ({grade})")
average = sum(scores.values()) / len(scores)
print(f"Average: {round(average, 1)}")
Die Logik ist identisch. Die sichtbaren Unterschiede liegen in der Syntax: PHP kennzeichnet Variablen mit $, beendet Anweisungen mit ; und nutzt geschweifte Klammern für Blöcke; Python nutzt Einrückung und keine Sigils.
Syntax im direkten Vergleich
| Aufgabe | PHP | Python |
|---|---|---|
| Variable | $count = 5; | count = 5 |
| Strings verbinden | "Hi " . $name | "Hi " + name |
| Variable einsetzen | "Hi $name" | f"Hi {name}" |
| Liste | [1, 2, 3] | [1, 2, 3] |
| Schlüssel/Wert-Map | ["a" => 1] | {"a": 1} |
| Länge | count($list), strlen($s) | len(list), len(s) |
| Über eine Map iterieren | foreach ($m as $k => $v) | for k, v in m.items(): |
| Funktion | function add($a, $b) { return $a + $b; } | def add(a, b): return a + b |
| Anonyme Funktion | fn($x) => $x * 2 | lambda x: x * 2 |
| Fallback bei fehlendem Schlüssel | $m["k"] ?? "default" | m.get("k", "default") |
| Strikte Gleichheit | === | == (keine Typumwandlung) |
Arrays: ein Typ in PHP, Listen und Dicts in Python
Python trennt Listen, Dicts, Tupel und Sets. PHP hat einen einzigen Array-Typ, eine geordnete Map, die all diese Aufgaben erledigt. Schlüssel können Ganzzahlen oder Strings sein, und die Einfügereihenfolge bleibt erhalten:
Die Python-Version braucht zwei verschiedene Typen:
colors = ["red", "green", "blue"]
codes = {"red": "#f00", "blue": "#00f"}
colors.append("yellow")
codes["green"] = "#0f0"
print("blue" in colors)
print("red" in codes)
PHPs einzelner Typ ist bequem, bringt aber eine Überraschung mit, die Python nicht hat: Funktionen wie array_filter behalten die ursprünglichen Schlüssel, sodass eine gefilterte Liste Lücken haben kann (0, 2, 3). Pack das Ergebnis in array_values(), um neu zu nummerieren.
Typen und Typumwandlung
Beide Sprachen sind dynamisch typisiert, und in beiden kannst du Typangaben hinzufügen. Der große Unterschied liegt darin, was passiert, wenn Typen sich mischen. Python weigert sich, einen String und eine Zahl zu addieren; PHP wandelt numerische Strings für dich um:
print("10" + 5) # TypeError: can only concatenate str (not "int") to str
print(7 / 2) # 3.5
print(7 // 2) # 3
PHP 8 hat Vergleiche zwischen Strings und Zahlen deutlich vernünftiger gemacht, aber die Gewohnheit bleibt dieselbe: Verwende in PHP ===, außer du willst eine Umwandlung. Mit declare(strict_types=1); am Anfang einer Datei lehnt PHP außerdem falsche skalare Typen bei typisierten Funktionsparametern ab und kommt damit näher an das Verhalten von Python-Typcheckern heran.
Webentwicklung
Hier unterscheiden sich die beiden am stärksten. Eine PHP-Datei ist so, wie sie ist, eine Webseite: Leg sie auf einen Server, und jede Anfrage führt sie von oben aus, mit den Formulardaten bereits in $_GET und $_POST. Führe diesen Block aus, tippe eine Stadt ein und klicke auf Send: Das Skript läuft erneut, mit gefülltem $_POST.
Python braucht für dieselbe Seite ein Framework und einen laufenden Anwendungsserver. Eine minimale Flask-Version:
from flask import Flask, request
from markupsafe import escape
app = Flask(__name__)
@app.route("/", methods=["GET", "POST"])
def home():
city = request.form.get("city", "").strip()
page = '<form method="post"><input name="city"><button>Send</button></form>'
if city:
page += f"<p>Weather lookup for <strong>{escape(city)}</strong></p>"
return page
Keines der beiden Modelle ist grundsätzlich besser. PHPs „eine Anfrage, ein frischer Durchlauf“ ist einfach zu deployen und schwer kaputtzumachen: Ein Absturz betrifft eine Anfrage, und der Speicher wird nach jeder Seite aufgeräumt. Pythons dauerhaft laufender App-Prozess kann Dinge zwischen Anfragen im Speicher halten und passt zu Websockets und Hintergrundarbeit, braucht aber mehr Einrichtung. Vollständige Frameworks (Laravel und Symfony in PHP, Django in Python) bieten am Ende ähnliche Features: Routing, ein ORM, Templates, Authentifizierung, Queues.
Performance
Für Webseiten führt PHP 8 mit OPcache einfachen Code im Allgemeinen schneller aus als CPython, und PHP 8 bringt außerdem einen JIT-Compiler mit. In der Praxis warten beide den Großteil einer Anfrage auf die Datenbank oder andere Dienste, daher entscheidet der Unterschied selten über ein Projekt. Bei Python sieht die Geschwindigkeit anders aus: Schwere numerische Arbeit erledigen Bibliotheken wie NumPy und pandas, deren Kern in C geschrieben ist. Deshalb führt Python bei der Datenarbeit trotz eines langsameren Interpreters.
Wo welche Sprache eingesetzt wird
| PHP ist am stärksten bei | Python ist am stärksten bei |
|---|---|
| WordPress-Websites, Themes und Plugins | Datenanalyse (pandas, Jupyter) |
| Webapps mit Laravel und Symfony | Machine Learning und KI (PyTorch, scikit-learn) |
| Shops: WooCommerce, Magento, Shopware | Automatisierung und Skripte |
| Günstiges Shared Hosting, Agenturen, Freelance-Websites | Wissenschaftliches Rechnen, Lehre |
| Serverseitig gerenderte Seiten und APIs | Web-Backends mit Django, Flask, FastAPI |
Der Arbeitsmarkt spiegelt das wider. PHP-Stellen sind meist Webentwicklung, oft WordPress oder Laravel. Python-Stellen reichen über Web, Daten, DevOps und ML, deshalb gibt es mehr davon.
Was du zuerst lernen solltest
Entscheide danach, was du in den nächsten Monaten bauen willst:
- Du willst Websites bauen, freiberuflich arbeiten oder mit WordPress arbeiten: Lern PHP. Du hast schnell eine Seite online, und die Fähigkeiten passen direkt zu bezahlter Arbeit. Fang an mit was PHP ist und Variablen.
- Du willst Datenanalyse, Automatisierung, KI oder eine allgemeine erste Sprache: Lern Python.
- Du willst moderne Webapps von vorne bis hinten bauen: Für das Backend funktionieren beide, und für den Browser brauchst du sowieso JavaScript; siehe PHP vs JavaScript.
Das meiste, was du lernst, lässt sich übertragen. Schleifen, Funktionen, Arrays und Maps, Klassen und Exceptions funktionieren in beiden fast gleich, also dauert die zweite Sprache Wochen, nicht Monate.
Häufig gestellte Fragen
Ist PHP schneller als Python?
Bei typischen Web-Anfragen ist PHP 8 dank OPcache und einer schnellen Engine meist schneller als CPython, aber beide sind schnell genug, dass Datenbank und Netzwerk den Großteil der Antwortzeit bestimmen. Für Rechenarbeit gibt Python die Arbeit normalerweise an in C geschriebene Bibliotheken wie NumPy ab.
Soll ich zuerst PHP oder Python lernen?
Lern zuerst Python, wenn du allgemein programmieren, Daten analysieren, automatisieren oder Machine Learning machen willst. Lern zuerst PHP, wenn dein Ziel Websites, WordPress-Arbeit oder Laravel-Apps sind, denn damit baust du eine funktionierende Seite und bringst sie auf fast jeden Webhoster.
Kann Python PHP in der Webentwicklung ersetzen?
Ja, mit Django, Flask und FastAPI baust du dieselben Arten von Websites und APIs. Der Unterschied liegt im Deployment und im Ökosystem: PHP läuft auf fast jedem Shared Host und hat WordPress, während Python-Webapps meist als dauerhaft laufender App-Server hinter einem Proxy laufen.
Was ist das PHP-Gegenstück zu einem Python-Dictionary?
Ein assoziatives Array: $user = ['name' => 'Ada', 'age' => 36]; und $user['name']. PHP-Arrays sind geordnete Maps, also deckt derselbe Typ Pythons list und dict ab.