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

时间:2017-06-01 01:13:26

标签: php php-5.6

我使用的是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错误吗?有解决方法吗?

1 个答案:

答案 0 :(得分:1)

来自手册nl2br

  

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

nl2br期望一个字符串作为输入,将一个布尔值转换为字符串,返回1表示true,“”表示false;所以没有惊喜,这就是你在这种情况下得到的。

在过滤器功能中,您可以在决定如何过滤变量之前检查变量类型。