Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
 
 
 

Variable mit isset in PHP prüfen

Sie befinden sich: Home > Php Tutorial > Variable mit isset in PHP p...

Variable mit isset in PHP prüfen


Eintrag am:  12.09.2009
Hits / Besucher:  22643
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials...
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Bevor du in PHP auf eine Variable zugreifst, solltest du sicherstellen, dass sie überhaupt existiert und einen Wert enthält. Genau dafür gibt es isset(). Es ist eines der am häufigsten verwendeten Sprachkonstrukte und unverzichtbar bei der Verarbeitung von Formulardaten, URL-Parametern und API-Antworten.

graph TD
A{"Was willst du prüfen?"}
A -->|"Existiert, nicht null?"| B["isset()"]
A -->|"Existiert, nicht leer?"| C["empty()"]
A -->|"Key auch bei null?"| D["array_key_exists()"]

Grundlagen von isset()

Das Sprachkonstrukt isset() prüft, ob eine Variable definiert ist und nicht den Wert null hat. Es gibt true oder false zurück.

<?php

$name = "Max";
$alter = null;

var_dump(isset($name)); // true
var_dump(isset($alter)); // false (null!)
var_dump(isset($unbekannt)); // false
?>

Wichtig: isset() gibt false zurück, wenn eine Variable zwar existiert, aber null enthält. Das unterscheidet es von array_key_exists().

Mehrere Variablen gleichzeitig prüfen

Ein oft übersehenes Feature: isset() akzeptiert mehrere Parameter. Es gibt nur dann true zurück, wenn alle Variablen gesetzt sind. Das kürzt besonders die Prüfung von Pflichtfeldern.

<?php

/* Statt drei einzelne Prüfungen: */
if (isset($_POST['name'])
&& isset($_POST['email'])
&& isset($_POST['nachricht'])) {
/* ... */
}

/* Geht auch in einer Zeile: */
if (isset(
$_POST['name'],
$_POST['email'],
$_POST['nachricht']
)) {
echo "Alle Pflichtfelder ausgefüllt.";
}
?>

Sobald eine der Variablen nicht gesetzt oder null ist, bricht isset() sofort ab und gibt false zurück. Das ist nicht nur kürzer, sondern auch performanter als mehrere einzelne Aufrufe.

Formulardaten sicher auslesen

Bei der Verarbeitung von Formulardaten ist isset() die erste Verteidigungslinie. Wenn ein Feld im Formular leer gelassen oder gar nicht gesendet wird, existiert der entsprechende Schlüssel in $_POST nicht.

<?php

if (isset($_POST['email'])) {
$email = trim($_POST['email']);
echo "E-Mail: " . htmlspecialchars($email);
} else {
echo "Bitte gib eine E-Mail-Adresse ein.";
}
?>

Verschachtelte Arrays prüfen

Bei komplexen Formularen oder API-Antworten sind die Daten oft mehrstufig verschachtelt. isset() kann auch verschachtelte Array-Zugriffe in einem einzigen Aufruf prüfen, ohne einen Fehler auszulösen.

<?php

$daten = [
'benutzer' => [
'adresse' => [
'plz' => '12345',
'ort' => 'Berlin',
],
],
];

/* Prüft alle Ebenen auf einmal */
if (isset($daten['benutzer']['adresse']['plz'])) {
echo $daten['benutzer']['adresse']['plz'];
}

/* Auch bei POST-Daten: */
if (isset($_POST['adresse']['plz'])) {
$plz = $_POST['adresse']['plz'];
}
?>

PHP prüft dabei jede Ebene einzeln. Wenn $daten['benutzer'] nicht existiert, wird nicht versucht, auf ['adresse'] zuzugreifen. Kein Fehler, kein Undefined index.

Unterschied zwischen isset(), empty() und array_key_exists()

Die drei Funktionen werden oft verwechselt. Die folgende Tabelle zeigt, wie sie sich bei verschiedenen Werten verhalten.

Wertisset()empty()array_key_exists()
"Hallo"truefalsetrue
""truetruetrue
0truetruetrue
nullfalsetruetrue
nicht definiertfalsetruefalse

Der entscheidende Unterschied: isset() gibt bei null-Werten false zurück, während array_key_exists() auch null-Werte als vorhanden erkennt. empty() prüft dagegen, ob ein Wert „leer“ ist, also "", 0, null, false oder ein leeres Array.

Moderner Ansatz: Null-Coalescing-Operator

Seit PHP 7.0 gibt es den Operator ??, der isset() mit einem Standardwert kombiniert. Das spart eine ganze If-Abfrage.

<?php

/* Klassisch mit isset */
if (isset($_GET['seite'])) {
$seite = $_GET['seite'];
} else {
$seite = 1;
}

/* Modern mit ?? */
$seite = $_GET['seite'] ?? 1;

/* Auch verschachtelt möglich */
$plz = $_POST['adresse']['plz'] ?? 'unbekannt';
?>

Der ??-Operator prüft intern mit isset(): Ist der linke Wert gesetzt und nicht null, wird er genommen. Andernfalls greift der Standardwert rechts. Du kannst den Operator auch verketten: $wert = $a ?? $b ?? $c ?? 'Standard';

Der Nullsafe-Operator für Objekte

Seit PHP 8.0 gibt es den Nullsafe-Operator ?->. Er löst ein ähnliches Problem wie isset(), aber bei verschachtelten Objekt-Zugriffen.

<?php

class Benutzer
{
public function getAdresse(): ?Adresse
{
return $this->adresse;
}
}

class Adresse
{
public function getOrt(): string
{
return $this->ort;
}
}

/* Klassisch mit isset: */
$ort = null;
if (isset($benutzer)) {
$adresse = $benutzer->getAdresse();
if ($adresse !== null) {
$ort = $adresse->getOrt();
}
}

/* Modern mit ?-> : */
$ort = $benutzer?->getAdresse()?->getOrt();
?>

Falls $benutzer oder getAdresse() den Wert null hat, bricht die Kette ab und das Ergebnis ist null. Kein Fehler, kein zusätzlicher Check nötig.

Verwandte Tutorials

Diese Tutorials vertiefen das Thema Variablenprüfung und Formulardaten:

 

Tags:

 

Kommentare (0)

Noch keine Kommentare. Sei der Erste!

Melde dich an, um einen Kommentar zu schreiben.
Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.