nl2br 将 true 转换为 int,将 false 转换为空字符串

nl2br converts true to int and false to empty string

我正在使用 PHP 版本 5.6.25。只需以下代码即可重现该问题。

$data['foo'] = true;
$data['bar'] = false;
var_dump($data);
$data['foo'] = nl2br($data['foo']);
$data['bar'] = nl2br($data['bar']);
array_walk_recursive($data, "filter");
var_dump($data);

结果如下。

array (size=2)
  'foo' => boolean true
  'bar' => boolean false
array (size=2)
  'foo' => string '1' (length=1)
  'bar' => string '' (length=0)

这是 PHP 错误吗?有解决方法吗?

来自手册nl2br

string nl2br ( string $string [, bool $is_xhtml = true ] )

nl2br 需要一个字符串作为输入,将布尔值转换为字符串 returns 1 表示 true,"" 表示 false;所以这就是您在这种情况下得到的结果。

在您的过滤函数中,您可以在决定如何过滤之前检查变量类型。