phpbar.de logo

Mailinglisten-Archive

[php] Was stimmt mit meiner if(or) Anweisung nicht?

[php] Was stimmt mit meiner if(or) Anweisung nicht?

Sebastian Mendel lists at sebastianmendel.de
Mit Jul 9 09:28:43 CEST 2008


Hans Egg schrieb:
> Hallo Reinhold
>
> Am 09.07.2008 um 08:21 schrieb Reinhold Jordan:
>
>> Hallo zusammen,
>>
>> wenn wir hier schonmal bei gutem Code sind...
>>
>>> if ( $_POST["cancel_to_product"] ...
>> müßte es nicht
>> if ( isset($_POST["cancel_to_product"]) ...
>> heißen?
>
> IMHO ist if($var) identisch mit if(isset($var))

nicht unbedingt, aber ich glaube es ging darum NOTICES zu vermeiden


> isset($var) liefert TRUE, wenn $var mit einem beliebigen Wert gesetzt
> ist, FALSE ist auch ein Wert.

eben deshalb ist es nicht gleich:

$var = false;

isset($var) !== (bool) $var


> isset($var) liefert FALSE, wenn $var nicht gesetzt ist oder auf NULL
> gesetzt ist.
>
> empty($var) liefert FALSE, wenn die Variable mit einem Wert NULL oder
> FALSE oder dem Wert 0 (Integer oder String) gesetzt ist, dies ist
> gleichbedeutend mit $var == TRUE

oder '' (leerer string)


>> Oder ist das immer gesetzt, mal mit true und mal mit false?
>
> Eine Variable kann existieren oder nicht.

eben, deshlab überprüft man immer ob sie existiert, und nciht direkt auf den 
Inhalt also isset() oder empty() anstelle von nur if()


> Wenn sie existiert, kann sie auch den Wert FALSE oder NULL haben.

deshalb empty()


> Variablen mit Wert FALSE
> oder NULL belegen Speicherplatz, unset($var) bewirkt, dass der
> Speicher freigegeben wird.

aber nur an PHP, nicht ans System


-- 
Sebastian Mendel

php::bar PHP Wiki   -   Listenarchive