将布尔值转换为整数值php


Convert boolean to integer value php

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)