lau*_*kok 293 php string casting boolean
如何将字符串转换为boolean?
$string = 'false';
$test_mode_mail = settype($string, 'boolean');
var_dump($test_mode_mail);
if($test_mode_mail) echo 'test mode is on.';
Run Code Online (Sandbox Code Playgroud)
它回来了,
布尔值为true
但它应该是boolean false.
Bra*_*rad 611
这个方法由@lauthiamkok在评论中发布.我在这里发布它作为回答更多关注它的答案.
根据您的需求,您应该考虑使用filter_var()与FILTER_VALIDATE_BOOLEAN标志.
filter_var( 'true', FILTER_VALIDATE_BOOLEAN); // true
filter_var( 1, FILTER_VALIDATE_BOOLEAN); // true
filter_var( '1', FILTER_VALIDATE_BOOLEAN); // true
filter_var( 'on', FILTER_VALIDATE_BOOLEAN); // true
filter_var( 'yes', FILTER_VALIDATE_BOOLEAN); // true
filter_var( 'false', FILTER_VALIDATE_BOOLEAN); // false
filter_var( 0, FILTER_VALIDATE_BOOLEAN); // false
filter_var( '0', FILTER_VALIDATE_BOOLEAN); // false
filter_var( 'off', FILTER_VALIDATE_BOOLEAN); // false
filter_var( 'no', FILTER_VALIDATE_BOOLEAN); // false
filter_var('asdfasdf', FILTER_VALIDATE_BOOLEAN); // false
filter_var( '', FILTER_VALIDATE_BOOLEAN); // false
filter_var( null, FILTER_VALIDATE_BOOLEAN); // false
Run Code Online (Sandbox Code Playgroud)
Gor*_*onM 314
字符串总是评估为布尔值true,除非它们具有被PHP认为是"空"的值(取自文档empty):
"" (空字符串);"0" (0作为字符串)如果需要根据字符串的文本值设置布尔值,则需要检查该值是否存在.
$test_mode_mail = $string === 'true'? true: false;
Run Code Online (Sandbox Code Playgroud)
编辑:上述代码旨在清楚理解.在实际使用中,以下代码可能更合适:
$test_mode_mail = ($string === 'true');
Run Code Online (Sandbox Code Playgroud)
wos*_*sis 34
"false" 实际上,String 被"TRUE"PHP 视为值.文件说:
要将值显式转换为布尔值,请使用(bool)或(boolean)强制转换.但是,在大多数情况下,转换是不必要的,因为如果运算符,函数或控件结构需要布尔参数,则会自动转换值.
另见Type Juggling.
转换为布尔值时,以下值被视为FALSE:
布尔值FALSE本身
整数0(零)
浮点数0.0(零)
空字符串,字符串"0"
一个零元素的数组
一个零成员变量的对象(仅限PHP 4)
特殊类型NULL(包括未设置的变量)
从空标签创建的SimpleXML对象
每个其他值都被视为TRUE(包括任何资源).
所以,如果你这样做:
$bool = (boolean)"False";
Run Code Online (Sandbox Code Playgroud)
要么
$test = "false";
$bool = settype($test, 'boolean');
Run Code Online (Sandbox Code Playgroud)
在这两种情况下$bool都会TRUE.所以你必须手动完成,就像GordonM建议的那样.
Nis*_*aan 16
使用JSON时,我必须通过发送布尔值$_POST.当我做了类似的事情时,我遇到了类似的问题:
if ( $_POST['myVar'] == true) {
// do stuff;
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我的布尔值被转换为JSON字符串.
要解决此问题,您可以使用json_decode()以下方法解码字符串:
//assume that : $_POST['myVar'] = 'true';
if( json_decode('true') == true ) { //do your stuff; }
Run Code Online (Sandbox Code Playgroud)
(这通常应该使用转换为字符串的布尔值并通过其他方式发送到服务器,即使用JSON以外的其他方式.)
sou*_*der 11
你可以使用json_decode来解码那个布尔值
$string = 'false';
$boolean = json_decode($string);
if($boolean) {
// Do something
} else {
//Do something else
}
Run Code Online (Sandbox Code Playgroud)
如果你的“boolean”变量来自一个全局数组,比如 $_POST 和 $_GET,你可以使用filter_input()filter 函数。
POST 示例:
$isSleeping = filter_input(INPUT_POST, 'is_sleeping', FILTER_VALIDATE_BOOLEAN);
Run Code Online (Sandbox Code Playgroud)
如果您的“boolean”变量来自其他来源,您可以使用filter_var()过滤功能。
例子:
filter_var('true', FILTER_VALIDATE_BOOLEAN); // true
Run Code Online (Sandbox Code Playgroud)
小智 9
filter_var($string, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
$string = 1; // true
$string ='1'; // true
$string = 'true'; // true
$string = 'trUe'; // true
$string = 'TRUE'; // true
$string = 0; // false
$string = '0'; // false
$string = 'false'; // false
$string = 'False'; // false
$string = 'FALSE'; // false
$string = ''; // false
$string = 'sgffgfdg'; // null
Run Code Online (Sandbox Code Playgroud)
您必须指定
FILTER_NULL_ON_FAILURE否则,即使 $string 包含其他内容,你也将始终为 false。
(boolean)json_decode(strtolower($string))
Run Code Online (Sandbox Code Playgroud)
它处理所有可能的变种 $string
'true' => true
'True' => true
'1' => true
'false' => false
'False' => false
'0' => false
'foo' => false
'' => false
Run Code Online (Sandbox Code Playgroud)
您可以使用 boolval($strValue)
例子:
<?php
echo '0: '.(boolval(0) ? 'true' : 'false')."\n";
echo '42: '.(boolval(42) ? 'true' : 'false')."\n";
echo '0.0: '.(boolval(0.0) ? 'true' : 'false')."\n";
echo '4.2: '.(boolval(4.2) ? 'true' : 'false')."\n";
echo '"": '.(boolval("") ? 'true' : 'false')."\n";
echo '"string": '.(boolval("string") ? 'true' : 'false')."\n";
echo '"0": '.(boolval("0") ? 'true' : 'false')."\n";
echo '"1": '.(boolval("1") ? 'true' : 'false')."\n";
echo '[1, 2]: '.(boolval([1, 2]) ? 'true' : 'false')."\n";
echo '[]: '.(boolval([]) ? 'true' : 'false')."\n";
echo 'stdClass: '.(boolval(new stdClass) ? 'true' : 'false')."\n";
?>
Run Code Online (Sandbox Code Playgroud)
文档 http://php.net/manual/es/function.boolval.php
小智 5
最简单的事情是这样的:
$str = 'TRUE';
$boolean = strtolower($str) == 'true' ? true : false;
var_dump($boolean);
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以循环一系列“true”、“TRUE”、“false”或“FALSE”并将字符串值获取为布尔值。
| 归档时间: |
|
| 查看次数: |
273176 次 |
| 最近记录: |