我想将String变量'true'或'false'转换为int'1'或'0' 要做到这一点,我正在尝试这样
{
"content":[
{
"memberId":1,
"name":"bob",
"phone1": "450",
"phone2": "1",
"email": "test"
},
{
"memberId":2,
"name":"robert"
"phone1": "2323",
"phone2": "2",
"email": "test"
}
],
"last":true,
"totalElements":27,
"totalPages":1,
"sort":null,
"numberOfElements":27,
"first":true,
"size":100,
"number":0
}
//给出1
(int) (boolean) 'true'
//给出1但我需要0
我现在可以使用像(int) (boolean) 'false'
这样的数组
或使用array('false','true');
但这种方式效率较低。
是否有另一种更有效的方法,如if($myboolean=='true'){$int=1;}
?
我知道这个问题已被问到。但我没有找到答案
答案 0 :(得分:4)
除非PHP具有被认为是“空”的值,否则字符串总是计算为布尔值true。
根据您的需要,您应该考虑将filter_var()与FILTER_VALIDATE_BOOLEAN标志一起使用。
(int)filter_var('true', FILTER_VALIDATE_BOOLEAN);
(int)filter_var('false', FILTER_VALIDATE_BOOLEAN);
答案 1 :(得分:2)
为什么不使用一元运算符
int $my_int = $myboolean=='true' ? 1 : 0;
答案 2 :(得分:1)
字符串" false"是 truthy 。这就是(int) (boolean) "false"
返回1而不是0的原因。如果您想从字符串中获取false
布尔值,则可以传递空字符串(int) (boolean) ""
。更多信息here。
答案 3 :(得分: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));
}

答案 4 :(得分:0)
$variable = true;
if ($variable) {
$convert = 1;
}
else {
$convert = 0;
}
echo $convert
答案 5 :(得分:0)
试试这个:
echo (int) (boolean) '';
答案 6 :(得分:-1)
通常只有$Int = (int)$Boolean
才能正常工作,或者您只需在变量前加一个+,就像这样:
$Boolean = true;
var_dump(+$Boolean);
ouputs: int(1);
另外,(int)(bool)'true'
也应该起作用