PHP是否有任何内置函数会接受布尔值并返回其等效整数?0表示FALSE,1表示TRUE?当然,你可以很容易地创建一个函数来实现这一点,我只是想问PHP内部是否有内置函数。我已经尝试过intval()
并将其转换为(int)
,但它们不起作用,在TRUE和FALSE的情况下都返回0。
编辑:问题是它不是一个真正的布尔值,它是一个字符串"false","true",php没有检测到它传递了一个布尔值的jquery帖子。问题解决了,谢谢!
http://www.php.net/manual/en/language.types.integer.php
$myInt = (int)$myBoolean
应在上工作
只需在变量前面加一个"+",如下所示:
$myBool = true;
var_dump(+$myBool);
ouputs: int(1);
// cast to Integer
echo (int)true; // 1
echo (int)false; // 0
// get the integer value from argument
echo intval(true); // 1
echo intval(false); // 0
// simply echoing true returns 1
echo true; // 1
// you can even add those values
echo true + true; // 2
如果您不确定数据类型,请参阅下面的示例,它适用于字符串、整数和布尔值。
<?php
$options = [ TRUE, FALSE, 'true', 'false', 1, 0, '1', '0', 'on', 'off', 'yes', 'no' ];
foreach ( $options as $option ) {
$bool = filter_var( $option, FILTER_VALIDATE_BOOLEAN ); // TRUE or FALSE
print (int) $bool . ' '; // 1 or 0
}
// Outputs: 1 0 1 0 1 0 1 0 1 0 1 0
?>
filter_var($var,filter_VALIDATE_BOOLEAN)将返回bool(true)或bool(false),然后简单地转换为整数。
filter_var()
(PHP 5>=5.2.0,PHP 7)
filter_var—使用指定的筛选器筛选变量
如果您通过AJAX POST从JSON I.E.中获取值,则该值将以字符串形式出现(正如您所发现的)。解决这个问题的方法是比较true/false字符串,然后将bool强制转换为int
$requestBool = $_REQUEST['bool_value']; //This is 'true' or 'false'
$myInt = (int)($requestBool === 'true');
echo $myInt;
//returns: 0 or 1
您可以一次完成多个铸件:
$isTest = 'true';
(int)(bool)$isTest
echo $isTest; // this outputs 1
使用类型转换(bool):
var_dump((bool) 1); // bool(true)
var_dump((bool) 0); // bool(false)