Zitat:
So einfach !!!!!
"!" scheint immer zu negieren, toll!
|
Darauf würde ich mich nicht verlassen. Aus gut informierten Kreisen verlautet, dass in PHP 6 Operatoren überladen werden können. ;-)
Nein, im Ernst:
Zitat:
Zitat von Buender
Hallo zusammen
Gibt es in PHP die Möglichkeit eine if Abfrage zu negieren? Also wie in ASP z.B.
PHP-Code:
if (empty($adr_row[firstname]))
print "{$adr_row[firstname]}<br />\n";
Ich habe != ungleich gefunden. Das geht aber mit empty() nicht, oder?
Isset() ist auch nicht richtig, da der Wert 0, "0" oder "" sein könnte.
|
Andersherum wird ein Schuh daraus: Empty() ist für die Abfrage, ob eine Zeichenkette leer ist untauglich, weil '0' als "empty" gesehen wird. Beim Aufruf von
wird intern in etwa folgendes Programm abgespult (IIRC):
PHP-Code:
@(bool)(integer)$var
Das ist PHP-typischer Schwachsinn, den man zumindest bei Zeichenketten mit
PHP-Code:
!isset($var[0])
besser lösen kann, weil damit explizit auf einen Leer-String geprüft wird, und nicht ein Wert zu BOOLEAN zwangsgecastet wird.
Empty() hat noch einen weiteren Haken: Es handelt sich dabei um ein so genanntes Sprachkonstrukt und KEINE Funktion. Das kann dazu führen, dass empty() nicht in jedem Fall genutzt werden kann. So liefert bspw.
PHP-Code:
empty(irgendeine_funktion())
eine lustige Fehlermeldung in der Art:
Zitat:
|
Fatal error: Can't use function return value in write context in schwurbel/meinscript.php on line 23
|
Die sauberere Lösung wäre, die Länge der Zeichenkette mit strlen() zu holen und dann mit 0 zu vergleichen.
PHP-Code:
if (strlen($var) === 0) {
// string ist leer
}
if (strlen($var) !== 0) {
// string ist nicht leer
}