将布尔值转换为整数值php

Posted

技术标签:

【中文标题】将布尔值转换为整数值php【英文标题】:Convert boolean to integer value php 【发布时间】:2013-12-03 04:05:01 【问题描述】:

是否有任何 php 的内置函数将采用布尔值并返回其等效整数? 0 为假,1 为真? 当然,您可以轻松地创建一个函数来执行此操作,我只是想问一下 PHP 内部是否有内置函数。我已经尝试过 intval() 并将其转换为 (int) 但它们不起作用,它们在 TRUE 和 FALSE 两种情况下都返回 0。

编辑:问题在于它不是真正的布尔值,它是一个字符串“false”,“true”,php 没有检测到它通过布尔值的 jquery 帖子。问题已解决,谢谢!

【问题讨论】:

您确定您在布尔值上使用 intval(),而不是在包含“TRUE”或“FALSE”的字符串上? echo (int)TRUE; - 如果这为你返回 0,那么你有一些非常非常糟糕的东西 这个问题似乎离题了,因为 OP 已经确定问题是他们误读了数据类型 【参考方案1】:

http://www.php.net/manual/en/language.types.integer.php

$myInt = (int)$myBoolean 应该可以工作

【讨论】:

【参考方案2】:

只需在变量前添加一个“+”,如下所示:

$myBool = true; 

var_dump(+$myBool);

ouputs: int(1);

【讨论】:

【参考方案3】:
// 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

【讨论】:

虽然这确实说明了重点......添加一两句话来解释也没有什么坏处。 echo false; 不返回0 @FlashThunder 它没有【参考方案4】:

如果您不确定数据类型,请参阅下面的示例,它适用于字符串、整数和布尔值。

<?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 — 使用指定过滤器过滤变量

【讨论】:

【参考方案5】:

如果您从 JSON I.E. 中获得价值通过 AJAX POST,该值将以字符串形式出现(如您所见)。解决此问题的一种方法是比较真/假字符串,然后将 bool 转换为 int

$requestBool = $_REQUEST['bool_value']; //This is 'true' or 'false'

$myInt = (int)($requestBool === 'true');
echo $myInt;

//returns: 0 or 1

【讨论】:

类似的方法:$myInt = ($requestBool === 'true') ? 1 : 0; 您的回答非常简单,首先,要接收 JSON,应该解析 POST BODY(例如此处为 ***.com/a/8945912/340142)。第二个 JSON 本身可以保存值 truefalsenull。只是想看看自己在浏览器的控制台中运行它JSON.stringify(one:true, two:false,three:null)【参考方案6】:

您可以一次进行多次投射:

$isTest = 'true';

(int)(bool)$isTest

echo $isTest; // this outputs 1

【讨论】:

是的,但是 (int)(bool)'false' 也输出 1【参考方案7】:

使用类型转换(bool):

var_dump((bool) 1);         // bool(true)
var_dump((bool) 0);         // bool(false)

【讨论】:

也许下次,尝试阅读这个问题 - OP 正在谈论相反的情况,将布尔值转换为整数,而不是将整数转换为布尔值 他想要其他方式 bool > int

以上是关于将布尔值转换为整数值php的主要内容,如果未能解决你的问题,请参考以下文章

Hive:将字符串转换为布尔值

将十六进制颜色值 (#ffffff) 转换为整数值

“将 Tiny 视为布尔值”和实体框架 4

如何在读取 CSV 文件时将字符串值转换为整数值?

转换成布尔

python数据类型强制转换和运算符