我从查询字符串中得到真或假我没有权限更改此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三元运算符是一个最佳选择但是还有其他转换选项
答案 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;
}
您可以使用三元选项