Naturale1602
19-07-2009, 16:25
Hi,
erstmal ich bin ein Anfänger und habe angefangen PHP zu lernen und hätte eine Frage:
<?php
$wert = '';
switch ($wert) {
case !empty($wert) :
echo $wert;
break;
default :
echo 'Standardwert';
break;
}
?>Ich würde gerne, dass der Text 'Standardwert' ausgegeben wird, wenn $wert leer ist.
Mit der If-Funktion klappt es, aber mit der switch irgendwie nicht...
Zweite Frage)
<?php
$wert = '0';
$feldwert= !empty($wert) ? $wert : 'Standardwert';
echo $feldwert;
?>Bei 0 wird nicht der Wert ausgegeben..sondern es wird als "false" angesehen!
Ist es möglich dass irgendwie mit dem ternären Operator zu umgehen oder geht das anders nicht?
Danke schonmal für die Hilfe, auch wenn es banale Fragen sind ^^.
Gruß
Hi,
erstmal ich bin ein Anfänger und habe angefangen PHP zu lernen und hätte eine Frage:
<?php
$wert = '';
switch ($wert) {
case !empty($wert) :
echo $wert;
break;
default :
echo 'Standardwert';
break;
}
?>Ich würde gerne, dass der Text 'Standardwert' ausgegeben wird, wenn $wert leer ist.
Mit der If-Funktion klappt es, aber mit der switch irgendwie nicht...
Wozu willst du hier Switch verwenden? Ist doch sinnlos.
Zweite Frage)
<?php
$wert = '0';
$feldwert= !empty($wert) ? $wert : 'Standardwert';
echo $feldwert;
?>Bei 0 wird nicht der Wert ausgegeben..sondern es wird als "false" angesehen!
Ist es möglich dass irgendwie mit dem ternären Operator zu umgehen oder geht das anders nicht?
empty() funktioniert nun mal so. Steht auch so im Handbuch:
PHP: empty - Manual (http://de.php.net/manual/en/function.empty.php)
Bei 0 wird nicht der Wert ausgegeben..sondern es wird als "false" angesehen!
Ist es möglich dass irgendwie mit dem ternären Operator zu umgehen oder geht das anders nicht?
Du wirst noch eine zusätzliche Bedingung für diesen Fall hinzufügen müssen, unter Nutzung des Identitätsoperators ===.
$feldwert = (!empty($wert) || $wert === '0') ? $wert : 'Standardwert';
Dabei musst du dir natürlich im Klaren darüber sein, welcher Typ von Wert vorliegt - ob du wirklich den Textstring '0' meinst, oder die Zahl 0. Wenn du das beides erlauben willst, erfordert das auch noch mal eine Erweiterung der Bedingung.
Naturale1602
19-07-2009, 16:53
Danke für die Hilfe.
Und ja ich weiß es ist sinnlos, dass man da switch nimmt, aber ich wollte es ja allgemein testen! Verschiedene Funktionen brauchen um etwas Routine zu bekommen.
Und ich habe mich gefragt wieso es bei der IF - Funktion klappt und bei der Switch Funktion nicht (da die beiden ja quasi identisch funktionieren im Prinzip).
Danke für die Hilfe.
Und ja ich weiß es ist sinnlos, dass man da switch nimmt, aber ich wollte es ja allgemein testen! Verschiedene Funktionen brauchen um etwas Routine zu bekommen.
Und ich habe mich gefragt wieso es bei der IF - Funktion klappt und bei der Switch Funktion nicht (da die beiden ja quasi identisch funktionieren im Prinzip).
Ok, wenn du willst:
$wert = '';
switch (empty($wert)) {
case false:
echo $wert;
break;
case true:
echo 'Standardwert';
break;
}
$wert = '';
switch (true)
{
case (!empty($wert)) : echo $wert; break;
default : echo 'Standardwert';
}
Solch einen Blödsinn kann man nur in PHP anstellen.