Felix Riesterer: Abfrage auf "leer"

Beitrag lesen

Lieber PHP-Beginner,

function myfunk ($staerke, $groesse, $farbe) {.....}
[...]
aufrufe mit z.B. myfunk('fett', '', 'grün');

also wird für den Parameter $groesse ein Leerstring übergeben.

Wie frage ich sinnvollerweise ab, ob $groesse einen Wert hat oder nichts wie in dem Beispiel?

Die Variable hat immer einen Wert, die Frage ist nur „von welchem Typ“ und wie er genau(!) aussieht.

Ich habe gefunden
isempty($groesse) und
$groesse == ''.

Du hast in PHP eine automatische Typumwandlung. Der Integer-Wert 0 entspricht z.B. bei losem Vergleich (doppeltes Istgleichzeichen) einem Leerstring. Dein Code würde bei einer Größe von 0 so tun, als wäre kein Wert übergeben worden. Prüft man mit einem dreifachen Istgleichzeichen, dann prüft man auch auf den Datentyp:

echo 0 ==  '' ? 'gleich' : 'verschieden'; // gleich
echo 0 === '' ? 'gleich' : 'verschieden'; // verschieden

Wenn myfunk() so geschrieben ist, dass beliebige Werte in $groesse keine unerwarteten Funktionalitäten verursachen können (Sicherheitsproblematik!!), dann reicht wohl empty() oder ein loser Vergleich mit einem Leerstring. Wenn aber zwingend zwischen dem Wert 0 und einem Leerstring unterschieden werden muss, dann benötigst Du eine feinere Abfrage, wie sie schon Raketenwilli mit is_integer() vorgeführt hat.

Liebe Grüße

Felix Riesterer