Так как у вас были числовые 0 и 1 в опциях switch
, он использовал числовое сравнение - «вкл» к числу равно 0, и поэтому оно совпало с 0.
Поскольку у вас есть параметр типа string
, число будет преобразовано в строку, поэтому удалите числовые сравнения ...
function convertStatusStringToIntZeroOrOne(string $status)
{
$status = strtolower($status);
switch ($status) {
case "off":
case "0":
$int_status = 0;
break;
case "on":
case "1":
$int_status = 1;
break;
default:
$int_status = 1;
break;
}
return $int_status;
}
echo convertStatusStringToIntZeroOrOne("On");
Хотя вы могли бы уменьшить функцию до ...
function convertStatusStringToIntZeroOrOne(string $status)
{
$status = strtolower($status);
return ($status == "off" || $status == 0)?0:1;
}