【问题标题】:Convert String 'true' or 'false' to interger '1' or '0'将字符串“true”或“false”转换为整数“1”或“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'这样的更有效的方法吗?

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

【问题讨论】:

  • 您为什么不尝试逐个投射数据?
  • @MammaMia 我已经完成了,但没有找到答案
  • @DrewJex,这不是同一个问题。 lqbal 需要一个整数,而不是布尔值。

标签: php string boolean


【解决方案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) '';

【讨论】:

  • 感谢您的回答。我认为所有正确的答案都是不同的方式。抱歉,我只能确定一个我认为最有效的正确答案。我感谢所有的答案
猜你喜欢
  • 2011-12-16
  • 2013-04-25
  • 2014-01-17
  • 2017-04-25
  • 2023-03-28
  • 2017-01-08
  • 1970-01-01
  • 1970-01-01
  • 2019-12-28
相关资源
最近更新 更多