String oder Zahl?

Thomasio

Erfahrenes Mitglied
PHP macht nicht viel Unterschied zwischen Zahlen und Strings, bzw. behandelt die Unterschiede automatisch, aber was passiert, wenn ich eine Variable auf Inhalt prüfen will, ohne zu wissen, ob Text oder Zahl drin steht?

Ich liebe ja diese Abkürzungen ala if(variable), die bei allem ausser 0 true zurück gibt.

Beispiel:
Ich lese ein Feld aus einem Datensatz aus MySql.
Sagen wir das Feld ist vom Typ Text, und kann sonstwas an Inhalt haben.

Code:
$MyRow = mysql_fetch_object(mysql_query("SELECT `feldname` FROM `tabelle` WHERE `id` = 1"));

if($MyRow->feldname)
{
// mach irgendwas
}

Was macht die Bedingung, wenn im Feld stehen könnte

- gar nichts
- die Zahl 0
- der Wert NULL
- der Text NULL
- eine einsame Leerstelle
 
Hi

Ausprobiert:

Ein String ergibt true, wenn irgendwas drin ist
(auch wenns nur ein Leerzeichen, oder die Buchstaben 'NULL' sind)
Leerstring '' ist aber false.

Zahl 0 und Wert NULL sind false

Gruß
 
Ich persönlich finde es sehr unschön und auch ein wenig gefährlich die automatische Konvertierung zu Boolean von PHP zu nutzen. Wer weiss wie sich gewisse Funktionen unter PHP5.x oder 6.x verhalten werden.
Zudem sieht man im Code besser was eigentlich erwartet wird.

PHP:
if(is_null($var)) echo 'false';
if($var==='') echo 'false';
if($var===0) echo 'false';
 
Auch wenn das Thema schon erledigt ist, der Vorschlag bzw. die Frage ob so etwas Sinn macht:

PHP:
<?php
$false = array("", 0, "0", NULL, "NULL", " ");

$var = "0";

if (in_array($var, $false)) {
	echo "FALSE";
} else {
	echo "TRUE";
}
?>
 

Neue Beiträge

Zurück