将字符串“true”或“false”转换为整数“1”或“0”

Posted

技术标签:

【中文标题】将字符串“true”或“false”转换为整数“1”或“0”【英文标题】:Convert String 'true' or 'false' to interger '1' or '0' 【发布时间】:2018-04-02 21:17:31 【问题描述】:

我想将字符串变量 'true' 或 'false' 转换为 int '1' 或 '0'。

为了实现这一点,我正在尝试这样

(int) (boolean) 'true' //gives 1
(int) (boolean) 'false' //gives 1 but i need 0 here

我现在可以使用像array('false','true'); 这样的数组 或使用if($myboolean=='true')$int=1;

但这种方式效率较低。

还有像(int) (boolean) 'true'这样的更有效的方法吗?

我知道有人问过这个问题。但我还没有找到答案

【问题讨论】:

您为什么不尝试逐个投射数据? ***.com/questions/7336861/… @MammaMia 我已经完成了,但没有找到答案 @DrewJex,这不是同一个问题。 lqbal 需要一个整数,而不是布尔值。 【参考方案1】:

字符串“false”是truthy。这就是(int) (boolean) "false" 返回 1 而不是 0 的原因。如果要从字符串中获取 false 布尔值,可以传递一个空字符串 (int) (boolean) ""。更多信息here。

【讨论】:

这很有帮助。但不是解决方案。因为我有数据真假【参考方案2】:

通常只需 $Int = (int)$Boolean 就可以正常工作,或者您可以在变量前添加一个 +,如下所示:

$Boolean = true; 

var_dump(+$Boolean);

ouputs: int(1);

另外,(int)(bool)'true' 也应该可以工作

【讨论】:

如果我的数据是布尔类型,则此方法有效。但我的数据是字符串 (int) (bool) 'false' --> true,这就是问题【参考方案3】:

php

$int = 5 - strlen($myboolean);

// 5 - strlen('true')  => 1
// 5 - strlen('false') => 0

javascript

// ---- fonction ----

function b2i(b)return 5 - b.length



//------------ debug -----------

for(b of ['true','True','TRUE','false','False','FALSE'])

  console.log("b2i('"+b+"') = ", b2i(b));

【讨论】:

它更短,更快,并且不区分大小写。 ;-)【参考方案4】:

字符串始终评估为布尔值 true,除非它们的值被 PHP 视为“空”。

根据您的需要,您应该考虑使用带有 FILTER_VALIDATE_BOOLEAN 标志的 filter_var()。

(int)filter_var('true', FILTER_VALIDATE_BOOLEAN);
(int)filter_var('false', FILTER_VALIDATE_BOOLEAN);

【讨论】:

感谢@Farhad Mortezapour。我认为你的回答是最有效的 啊,这很酷,你可以过滤一个字符串来验证它是否是一个布尔值......很酷。【参考方案5】:
$variable = true;

if ($variable) 
     $convert = 1;

else 
    $convert = 0;


echo $convert

【讨论】:

感谢您的回答。我认为所有正确的答案都是不同的方式。抱歉,我只能确定一个我认为最有效的正确答案。我感谢所有的答案 我相信问题是如何将字符串转换为 1 或 0,而不是布尔值。 将字符串转换为 int。 $a = "1"; 转换为 do $b = (int)$a 然后对变量 $b 执行 if 语句【参考方案6】:

为什么不使用一元运算符

int $my_int = $myboolean=='true' ? 1 : 0;

【讨论】:

感谢您的回答。我认为所有正确的答案都是不同的方式。抱歉,我只能确定一个我认为最有效的正确答案。我感谢所有的答案【参考方案7】:

试试这个:

echo (int) (boolean) '';

【讨论】:

感谢您的回答。我认为所有正确的答案都是不同的方式。抱歉,我只能确定一个我认为最有效的正确答案。我感谢所有的答案

以上是关于将字符串“true”或“false”转换为整数“1”或“0”的主要内容,如果未能解决你的问题,请参考以下文章

如何在c中将bool的输出从1和0转换为true或false [重复]

为什么是C ++中的“整数”数据类型,能够容纳“ true”或“ false;布尔值

将字符串“true”/“false”转换为布尔值[duplicate]

Golang学习 - strconv 包--数据类型转换

在c#中如何实现判断一个数值是不是为整数(或小数)?

php第二节(变量常量)