Oft hat man das Problem das man überprüfen möchte ob eine Variable leer ist. Zwar stellt PHP einem die Funktion empty() zur Verfügung, allerdings hat diese eine Menge nachteile. Z.B. wenn man einen String hat der nur aus Freizeichen und Tabulatoren (Einrückungen) besteht, wird diese Funktion angeben das die Variable einen Wert hat. Oft ist genau das nicht erwünscht. Die nachfolgende Funktion sollte garantiert funktionieren auch wenn euer String nur aus Leerzeichen besteht.
PHP
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
<?php
function blank($String)
{
if(!isset($String))
return true;
Nun kommt aber noch etwas hinzu. Ich weiß nicht, was es ist, aber irgendwie haben die PHP-Entwickler bei empty() einen Bug zum Feature gemacht .
empty() gibt nämlich auch true zurück, wenn die Variable gar nicht leer ist, sondern die Wert 0 oder false enthält. Es müsste demnach so heißen:
<?php
$var = " ";
$var = trim($var);
if ($var == null) {
echo "Variable ist leer!";
}
?>
Das ganze (sowohl das erste Beispiel als auch das zweite) haben aber einen Haken:
Code
1:
Notice: Undefined variable: var in xxx on line xxx
Diese Meldung würde immer ausgegeben, wenn die Variable vorher nicht mit $var = " "; initialisiert würde. Beim zweiten Beispiel würde dies auch bei der if-Abfrage passieren. Deshalb würde ich das ganze wie folgt ändern:
PHP
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
<?php
if (isset($var)) {
$var = trim($var);
if ($var == null) {
echo "Variable ist leer!";
}
} else {
echo "Variable existiert nicht!";
}
?>
Wenn man das ganze in eine Funktion schreiben möchte, um es universal anwenden zu können, kann man die isset()-Abfrage natürlich weglassen, da der Compiler schon den Versuch, eine Funktion mit nicht initialisierten Variablen als Parameter mit einer Notice vermerkt. Das muss also schon vorher geprüft werden.
Orginal von Manko10
Nun kommt aber noch etwas hinzu. Ich weiß nicht, was es ist, aber irgendwie haben die PHP-Entwickler bei empty() einen Bug zum Feature gemacht .
Das Widerlegt meine Aussage nicht .
Ich muss sagen, dass ich empty() insgesamt etwas allgemein finde. Jeder muss selbst entscheiden, was in dieser Situation leer ist und was als Wert gilt.