如何将布尔值转换为字符串

tag*_*tag 210 php string

我有一个布尔变量,我想将其转换为字符串

$res = true;
Run Code Online (Sandbox Code Playgroud)

我需要它转换值也处于格式"true" "false""0" "1"

$converted_res = "true";
$converted_res = "false";
Run Code Online (Sandbox Code Playgroud)

我试过了:

$converted_res = string($res);
$converted_res = String($res);
Run Code Online (Sandbox Code Playgroud)

但它告诉我string并且String不是公认的功能.如何在php中将此布尔值转换为格式为"true"或"false"的字符串?

hob*_*ave 327

__PRE__

  • @ user2443147类型为boolean实际上是问题中提到的第一个事实.如果您不确定要处理的类型,那么您可能会遇到另外一组问题. (13认同)
  • 请注意,混合使用三元运算符和字符串连接时需要额外的括号.`echo'<active>'.$ res?'真假' .'</ active>';`不产生所需的结果,`echo'<active>'.($ res?'true':'false').'</ active>';`的确如此. (3认同)
  • 这是最简单的方法,但这取决于您的需要,因为它可能不是最好的解决方案。 (2认同)
  • 例如对我来说,这不是手头案例的最佳解决方案:我不确定返回值的类型是什么;它可能是布尔值或其他内容。(在调试期间调用其他人编写的函数。)您的解决方案将 $res 转换为布尔值,而 var_export 可以处理所有可能的类型。 (2认同)

Chr*_*vén 179

函数var_export返回变量的字符串表示,因此您可以这样做:

var_export($res, true);
Run Code Online (Sandbox Code Playgroud)

第二个参数告诉函数返回字符串而不是回显它.

  • 完美的答案。这是获取“...变量的可解析字符串表示形式”的“PHP”方式 (5认同)

Fre*_*eez 54

另一种方法: json_encode( booleanValue )

echo json_encode(true);  // string "true"

echo json_encode(false); // string "false"

// null !== false
echo json_encode(null);  // string "null"
Run Code Online (Sandbox Code Playgroud)

  • 我认为*语义*使用`var_export()`更符合操作的意图(除非需要一些JSON的字符串,即:-) (6认同)
  • 这实际上依赖于JSON表示恰好与所需内容相同的副作用.它还依赖于安装和启用的JSON扩展,这可能很有可能但不是给定的.所以imho这不是一个干净的解决方案. (2认同)

dev*_*ler 35

请参见var_export

  • 有关详细信息,请参阅[Christian的答案](http://stackoverflow.com/questions/2795177/how-to-convert-boolean-to-string#answer-8728795).具体来说,包括第二个参数(true). (2认同)

tre*_*nik 11

您可以使用strval()或(string)在PHP中转换为字符串.但是,这不会将布尔值转换为"true"或"false"的实际拼写,因此您必须自己执行此操作.这是一个示例函数:

function strbool($value)
{
    return $value ? 'true' : 'false';
}
echo strbool(false); // "false"
echo strbool(true); // "true"
Run Code Online (Sandbox Code Playgroud)


ale*_*emb 8

这里的其他解决方案都有警告(虽然他们解决了手头的问题).如果您(1)循环使用混合类型或(2)想要一个可以作为函数导出或包含在您的实用程序中的通用解决方案,那么这里没有其他解决方案可行.

最简单,最不言自明的解决方案是:

// simplest, most-readable
if (is_bool($res) {
    $res = $res ? 'true' : 'false';
}

// same as above but written more tersely
$res = is_bool($res) ? ($res ? 'true' : 'false') : $res;

// Terser still, but completely unnecessary  function call and must be
// commented due to poor readability. What is var_export? What is its
// second arg? Why are we exporting stuff?
$res = is_bool($res) ? var_export($res, 1) : $res;
Run Code Online (Sandbox Code Playgroud)

但是大多数阅读代码的开发人员都需要访问http://php.net/var_export来了解var_export第二个参数的作用和内容.

1. var_export

适用于boolean输入,但也将其他所有内容转换为a string.

// OK
var_export(false, 1); // 'false'
// OK
var_export(true, 1);  // 'true'
// NOT OK
var_export('', 1);  // '\'\''
// NOT OK
var_export(1, 1);  // '1'
Run Code Online (Sandbox Code Playgroud)

2. ($res) ? 'true' : 'false';

适用于布尔输入,但将其他所有内容(整数,字符串)转换为true/false.

// OK
true ? 'true' : 'false' // 'true'
// OK
false ? 'true' : 'false' // 'false'
// NOT OK
'' ? 'true' : 'false' // 'false'
// NOT OK
0 ? 'true' : 'false' // 'false'
Run Code Online (Sandbox Code Playgroud)

3. json_encode()

同样的问题var_export,可能更糟,因为json_encode无法知道字符串true是字符串还是布尔值.