将布尔值转换为整数值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 本身可以保存值 true
、false
和 null
。只是想看看自己在浏览器的控制台中运行它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的主要内容,如果未能解决你的问题,请参考以下文章