将字符串true / false转换为整数值

时间:2017-01-18 07:35:20

标签: php

我从查询字符串中得到真或假我没有权限更改此www.example.com?is_test=true

但是对于数据库i的后端除了像0,1

这样的整数之外

为了达到这个目的,我试着这样做

(int) (boolean) 'true' //gives 1
(int) (boolean) 'false' //gives 1 but i need 0 here

我尝试过的事件

$test = "false";
$bool = settype($test, 'boolean'); //it was giving true

(int) $bool also gives 1

我不确定是否可能有其他更好的PHP功能来实现这一目标? 或者任何更好的方法请建议

Yah三元运算符是一个最佳选择但是还有其他转换选项

5 个答案:

答案 0 :(得分:2)

PHP无法读取您的字符串。你必须使用某种if-else结构:

if ($GET['is_test'] === 'false') {
    return 0;
} else {
    return 1;
}

答案 1 :(得分:1)

简单地说:

(!empty($_GET['is_test']) && $_GET['is_test'] === 'true' ? 1 : 0)

编辑:您在这里检查变量是否存在,这样您就不会收到通知错误。

答案 2 :(得分:1)

目前的答案是完美的。但是,为了维护和可读性,您可以轻松地创建解析器类来完成这些操作。像这样举例如:

namespace Parser;

class Convert
{
    public static function StringToBoolean(
        $string
    ) {
        if(strpos('true', $string) || strpos('false', $string)) {
            return strpos('true', $string) ? true : false;
        }
        throw new Exception("$string is not true or false.");
    }
}

然后,只要您想使用它,就可以手动输入字符串或使用变量进行转换。

echo (int) $example = Parser\Convert::StringToBoolean('true');   // 1
$stringBool = 'false';
echo (int) $example = Parser\Convert::StringToBoolean($stringBool);  // 0

答案 3 :(得分:0)

如@vp_arth所述,这是最好的选择

echo intval($_GET['is_test'] === 'true') //gives 0,1 for false,true

答案 4 :(得分:-1)

if(isset($_GET['is_test']))
{
    return ($_GET['is_test']=="true") ? 1 : 0;
}

您可以使用三元选项