/ / Boolean und String Bedingung - php

Boolesche und String-Bedingung - php

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 № 1

Du 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;