将字符串“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】:$int = 5 - strlen($myboolean);
// 5 - strlen('true') => 1
// 5 - strlen('false') => 0
// ---- 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;布尔值