Ich muss meinen Status in einer Methode in Wörter ändern, aber wenn ich der Methode ein Argument als String übergeben, erhalte ich das Ergebnis aus beiden Bedingungen:
public static function Status($status)
{
if ($status == true || $status == True || $status == "true" || $status == "True" || $status == 1)
{
echo "true";
}
if ($status == false || $status == False || $status == "false" || $status == "False" || $status == 0)
{
echo "false";
}
}
Wenn ich der Methode "False" als String übergebe, bekomme ich truefalse
Ergebnis, aber ich habe keine Probleme mit String-Werten.
Antworten:
5 für die Antwort № 1Du solltest benutzen ===
Anstatt von ==
um zu überprüfen, ob der Wert identisch ist. Weil jeder String als betrachtet wird true
wenn verglichen wird, ohne den Variablentyp zu prüfen. Ändern Sie also Ihren Code in
function Status($status)
{
if ($status === true || $status === True || $status === "true" || $status === "True" || $status === 1)
{
echo "true";
}
if ($status === false || $status === False || $status === "false" || $status === "False" || $status === 0)
{
echo "false";
}
}
http://php.net/manual/en/language.operators.comparison.php
1 für die Antwort № 2
Ein einfacher Trick, der nützlich sein könnte:
if (is_string($status)) $status = json_decode($status);
if ($status) {
echo "true";
}
else {
echo "false";
}
json_decode konvertiert "False" oder "False" in einen Boolean falschdasselbe mit wahr.
Eine andere Möglichkeit wäre, Strings in Ruhe zu lassen. Konvertieren Sie also Booleans und Ganzzahlen in den String "true" und "false".
if (!is_string($status)) $status = ($status) ? "true" : "false";
echo $status;