我使用的是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错误吗?有解决方法吗?
答案 0 :(得分:1)
来自手册nl2br
string nl2br(string $ string [,bool $ is_xhtml = true])
nl2br期望一个字符串作为输入,将一个布尔值转换为字符串,返回1表示true,“”表示false;所以没有惊喜,这就是你在这种情况下得到的。
在过滤器功能中,您可以在决定如何过滤变量之前检查变量类型。