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;所以这就是您在这种情况下得到的结果。
在您的过滤函数中,您可以在决定如何过滤之前检查变量类型。
我正在使用 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;所以这就是您在这种情况下得到的结果。
在您的过滤函数中,您可以在决定如何过滤之前检查变量类型。