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

8

我希望将字符串变量'true'或'false'转换为整数'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'

我知道这个问题已经被问过了,但我没有找到答案。


为什么不尝试逐个转换您的数据? - Herry Potei
1
https://dev59.com/E2s05IYBdhLWcg3wR_63 - Drew Jex
@MammaMia 我已经完成了,但是还没有找到答案。 - Sate Wedos
@DrewJex,这不是同一个问题。lqbal想要一个整数,而不是一个布尔值。 - user3114072
7个回答

13

除非字符串被PHP视为空值,否则它们总是被评估为布尔值true。

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

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

{btsdaf} - Sate Wedos
{btsdaf} - levi

2
为什么不使用一元运算符?
int $my_int = $myboolean=='true' ? 1 : 0;

{btsdaf} - Sate Wedos

1

字符串 "false" 是 真值。这就是为什么 (int) (boolean) "false" 返回 1 而不是 0。如果你想从字符串中获取一个 false 布尔值,可以传递一个空字符串 (int) (boolean) ""。更多信息 在这里


1
这非常有帮助,但并不是解决方案,因为我有真或假的数据。 - Sate Wedos

0
尝试一下这个:
echo (int) (boolean) '';

{btsdaf} - Sate Wedos

0

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));
}


这是更短、更快的,而且不区分大小写的。;-) - user3114072

0
$variable = true;

if ($variable) {
     $convert = 1;
}
else {
    $convert = 0;
}

echo $convert

{btsdaf} - Sate Wedos
问题是如何将字符串转换为 1 或 0,而不是布尔值。 - RufusVS
将字符串转换为整数。 $a =“1”; 要进行转换,请执行 $b =(int)$a,然后在变量 $b 上执行 if 语句。 - levi

-1
通常只需要使用$Int = (int)$Boolean就可以了,或者你可以在变量前面加上一个+,像这样:
$Boolean = true; 

var_dump(+$Boolean);

ouputs: int(1);

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


这个代码适用于布尔类型的数据。但是我的数据是字符串类型。 - Sate Wedos
(int) (bool) 'false' --> true,这就是问题。 - Logi24

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接