Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

[PHP] banale Frage

Wo ist der unterschied zwischen
if($foo)
{
   echo $foo;
}

und

if(isset($foo))
{
   echo $foo;
}


Antworten zu [PHP] banale Frage:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Die erste if-Anweisung ist streng genommen lt. PHP falsch, obwohl von vielen PHP-Versionen bzw. "Webspaces" akzeptiert.

Die zweite Anweisung ist richtig und wir überall akzeptiert. Bei manchen Providern würdest du mit der ersten Anweisung Fehlermeldungen bekommen, da es eigentlich keine korrekte Anweisung ist, es wird streng genommen ja keine Bedinungen überprüft. Beide Anweisungen stehen jedoch für das gleiche, es wird überprüft, ob die Variabel "$foo" existiert.
Die erste if-Anweisung ist streng genommen lt. PHP falsch, obwohl von vielen PHP-Versionen bzw. "Webspaces" akzeptiert.

Die zweite Anweisung ist richtig und wir überall akzeptiert. Bei manchen Providern würdest du mit der ersten Anweisung Fehlermeldungen bekommen, da es eigentlich keine korrekte Anweisung ist, es wird streng genommen ja keine Bedinungen überprüft. Beide Anweisungen stehen jedoch für das gleiche, es wird überprüft, ob die Variabel "$foo" existiert.

Was sie machen weiß ich schon. Wollte nur wissen, obs einen unterschied macht. Dann mal vielen Dank für die Info.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
ich würde dir ja raten nur isset() für solche Überprüfungen zu benutzen, damit bist du auf jeden Fall auf der sicheren Seite, auch wenn du z.B. Scripte machst und nicht weißt, auf welchen Servern mit welchen Configs sie laufen sollen.

Hab diesen feinen Unterschied auch erst bemerkt, als mich jemand wegen meine Kontaktformular gefragt hat, dann hab ich nur mal seine Fehlermeldung bei google eingegeben und da kam dann die Antwort.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Also ich verstehe nicht warum die erste Abfrage falsch sein soll... (kann natürlich sein, dass einige Interpreter aus Sicherheitsgründen das nicht annehmen, da werden nämlich denke ich gerne Fehler gemacht)

PHP lehnt sich da doch sehr an C/C++ an...

Das Problem ist, dass die Bedingung if($foo) auch dann falsch ist, wenn $foo den Wert 0 oder den Wert false hat (weiß ich jetzt nicht, ob es NULL bei PHP gibt, sonst liefert sie da auch false zurück). Ich glaube, wenn es ein leerer String ist (also "" oder ''), wird auch false zurück geliefert (im Gegensatz zu C/C++).

if(isset($foo)) liefert nur false, wenn die Variable gar nicht existiert.

« Letzte Änderung: 18.11.06, 20:46:32 von mati »
Also ich verstehe nicht warum die erste Abfrage falsch sein soll... (kann natürlich sein, dass einige Interpreter aus Sicherheitsgründen das nicht annehmen, da werden nämlich denke ich gerne Fehler gemacht)

PHP lehnt sich da doch sehr an C an...

Das Problem ist nur, dass die Bedingung if($foo) auch dann falsch ist, wenn $foo den Wert '0' oder den Wert 'false' hat (weiß ich jetzt nicht, ob es NULL bei PHP gibt, sonst liefert sie da auch false zurück). Ich glaube, wenn es ein leerer String ist (also "" oder ''), wird auch false zurück geliefert.

if(isset($foo)) liefert nur false, wenn die variable gar nicht existiert.

Oha, das ist auch noch ein guter Grund , isset() zu benutzen.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Die erste if-Anweisung ist streng genommen lt. PHP falsch, obwohl von vielen PHP-Versionen bzw. "Webspaces" akzeptiert.


Kann man das irgendwo nachlesen? Mir wäre das nämlich auch neu.

Streng genommen ist die erste if-Anweisung meines Erachtens nicht falsch. Ein if-Konstrukt erwartet als Parameter einen Ausdruck. Eine simple Variable ist bereits ein Ausdruck.

Die 2 angegebenen Fälle unterscheiden sich natürlich. Nehmen wir an, $foo wird mit dem Wert false initialisiert. Dann liefert die erste if-Anweisung ein false zurück, die zweite dagegen true. Aber das hat mati ja schon richtig erklärt.

Und um nochmal auf das erste if-Konstrukt zurückzukommen:
Das ist eigentlich sehr praktikabel und schätzungsweise syntaktisch richtig. Man könnte z.B. eine Funktion übergeben, die je nach Situation entweder true oder false zurückgibt. Man könnte das so schon ganz einfach abfragen. Besser wäre dann natürlich, auch den Rückgabetyp zu berücksichtigen:

<?php
if (myFunction() === true)
{
// do something
}
?>


...aber unbedingt nötig ist es nicht.

Also es würde mich interessieren, wo du das gelesen haben willst, Schwoebi ;)

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Ich find grad die Seite nich, aber da dieser Ausdruck von einigen Webhostern aus Sicherheitsgründen "deaktiviert" wurde, sollte man ihn nicht benutzen, da ist es besser mit isset() zu machen oder den Wert (0, false, NULL) zu berücksichtigen.

Ich suche aber mal nach der Seite ;)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Ich suche aber mal nach der Seite ;)

Ich bitte dringend darum ;)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ich hab übrigens mal mit NULL ausprobiert...
also wenn ich der Variablen $var den Wert NULL zuweise, dann liefern BEIDE Abfragen false (also auch isset($var)).

Auf diese Weise kann man dann wohl also Variablen löschen.... wobei es dazu aber glaube ich auch ne Funktion gab.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Jupp, zwischen NULL und false liegt noch ein himmelweiter Unterschied. false ist ja praktisch gesehen ein Wert, nämlich ein bool'scher. NULL ist quasi nicht existent.

Die gesuchte Funktion heißt übrigens unset() ;)

greez 8)
JoSsiF

Wie man doch aus so banalen Fragen, eine gute Diskusion erstellen kann :)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Das zeigt meines Erachtens vielmehr, dass die Frage gar nicht so banal ist. Im Gegenteil: was im Kleinen banal erscheint, hat im größeren Kontext schon so manche Applikation versaut ;)

Schonmal das hier gesehen?
http://www.blueshoes.org/en/developer/syntax_exam/

greez 8)
JoSsiF


« Ihre Frage: GrafikformateEclipse »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
PHP
PHP steht für Personal Home Page und ist eine Skriptsprache die meist verwendet wird zur dynamischen Erzeugen von Internetseiten. PHP zeichnet sich durch die weite D...

Grundstrich
Der Begriff des Grundstrichs im Bereich der Typografie, bezeichnet den senkrechten Strich der Buchstaben. Bei Schriftarten mit variabler Strichstärke, wie zum Beispi...

Haarstrich
Der Begriff Haarstrich stammt aus dem Bereich der Typographie. Bei Schriften, wie zum Beispiel der Antiquaschrift mit unterschiedlichen Strichstärken, wird zwischen ...