if/else
Bernd
- php
Wenn in $Projekt nichts steht, soll das letztet else genommen werden. Macht es aber nicht, ich erhalte immer die erste Ausgabe, warum?
if ($Projekt == 0) {
$AP_Hinweis_IN = "AP 1";
$AP_Hinweis_EX = "AP 2";
} elseif ($Projekt == 1) {
$AP_Hinweis_IN = "Intern";
$AP_Hinweis_EX = "Extern";
} else {
$AP_Hinweis_IN = "Intern";
$AP_Hinweis_EX = "Extern";
}
Wenn ich
var_dump($Projekt);
mir ausgeben lasse, erhalte ich NULL
Hab es jetzt so gelöst
$Projekt == "";
if ($Projekt == 0) {
$AP_Hinweis_IN = "AP 1";
$AP_Hinweis_EX = "AP 2";
}
if ($Projekt == 1) {
$AP_Hinweis_IN = "Intern";
$AP_Hinweis_EX = "Extern";
}
if ($Projekt == "") {
$AP_Hinweis_IN = "Intern";
$AP_Hinweis_EX = "Extern";
}
Hallo Bernd,
$Projekt == "0";
ist ein Test, keine Zuweisung. Diese Zeile ist ohne jede Wirkung.
Der Verzicht auf die else-s bewirkt, dass die if nacheinander abgearbeitet werden und der letzte, der TRUE meldet, gewinnt. Im Falle von "" in $Projekt ist es der letzte if. Im Falle von "0" in $Projekt ist er es aber auch. Deswegen ist dein Code falsch und deswegen habe ich ein Minus gesetzt. Was Du gebaut hast, ist nicht nur keine Lösung, es führt zu falschen Ergebnissen.
Dein Problem ist PHPs Typangleichung, die beim == passiert. NULL, 0, und "" werden da alle als gleich angesehen. "" und "0" sind verschieden, null und "0" auch. Aber 0 und "0" sind wieder gleich.
Um die richtige Formulierung zu finden, müsste man wissen, welchen Typ der Wert in $Projekt hat, wenn die Variable mit einem Wert gefüllt ist. Ist es eine Zahl, oder ein String? PHP erlaubt es, damit zu schludern, aber wenn man ungenau arbeitet ist die Konsequenz ein falsches Programm.
Rolf
Tach!
Wenn in $Projekt nichts steht,
if ($Projekt == 0) {
Wenn ich
var_dump($Projekt);
mir ausgeben lasse, erhalte ich NULL
var_dump($Project == 0);
dedlfix.
Ich frage mich seit langem warum eine Sprache, die schlamperhaften Code geradezu herausfordert, so erfolgreich werden konnte.
Fragst du dich das inzwischen auch?