昨天在写 PDO数据库封装类的 测试代码时遇到这个问题,取出的数组 使用 count 返回5,使用 array_keys 返回数组,但是在 dump 的时候却返回 null,纠结了好长时间,诸如下图:
?
dump 函数用了好多年了,一直没有出现这个问题,我还以为是 $rowset 返回的是引用,所以还重新赋值了下,
我的dump函数如下:
class="php">function dump($vars, $label = '', $return = false) { $content = "<pre>\n"; if ($label != '') { $content .= "<strong>{$label} :</strong>\n"; } $content .= htmlspecialchars(print_r($vars, true)); $content .= "\n</pre>\n"; if ($return) { return $content; } echo $content; }
?
话说这个函数从php4.3时代就跟着我打拼,一直没出现过啥问题,....
?
最后 查了N多地方才把注意力移到这个上面,我机器上装的是 PHP5.5,我没有测试过到底是哪个版本就会出现这个问题,此处标记下,这个是坑...
?
那行代码 改成:
$content .= htmlspecialchars(print_r($vars, true),ENT_COMPAT | ENT_IGNORE);
?
这个,增加第二个参数 ,并追加
| ENT_IGNORE
?
?
写道 string htmlentities ( string $string [, int $flags = ENT_COMPAT [, string $charset [, bool $double_encode = true ]]] )?