小编在OA系统开发中,遇到了一个问题,从数据库中打印查询出来的结果,已经全部出来了。当把两个数组通过array_intersect()比对输出他们共有的结果时,发现总是少一个值。通过打印发现是因为那个值前面有一个空格。没有查到在哪里把空格加上的,只好想办法把空格删掉。以下是小编在网上搜到的代码,把数组结果过滤一遍便得到了小编想要的结果。

以下是我尝试转换的代码…

foreach ($table_rows as $row => $tr) { //获取table里的tr元素
foreach ($tr->childNodes as $td) { //获取tr里的td元素然后把td的值赋予新的二维数组
$data[$row][] = preg_replace(‘/\s+/’, ”, str_replace(‘ ‘,”,$td->nodeValue));
//在这里去除空格都不行
//$data的输出就是上面的数组

}
}

我也尝试了下面这个代码来删除那连个空格,也是不行…

foreach ($table_rows as $row => $tr) {
foreach ($tr->childNodes as $td) {
$data[$row][] = preg_replace(‘/[\r\n\s]+/’, ”, trim($td->nodeValue, “”));
}
}

正确答案:foreach ($table_rows as $row => $tr) {
foreach ($tr->childNodes as $td) {
$data[$row][] = preg_replace(“/[^a-zA-Z0-9]/”, “”, $td->nodeValue);
}
}

最终小编使用的方法如下:

function TrimArray($Input){
    if (!is_array($Input))
        return trim($Input);
    return array_map('TrimArray', $Input);
}