在php中清理多维数组

在php中清理多维数组,php,Php,编写此函数是为了清理数组并将0、null和false保留为有效值 function sanitize_array($array = array()) { if (is_array($array)) { $filtered_array = array_filter($array, create_function('$a', 'return trim($a)!=="";')); $filtered_and_trimmed_array = a

编写此函数是为了清理数组并将0、null和false保留为有效值

function sanitize_array($array = array()) {
    if (is_array($array)) {
        $filtered_array = array_filter($array, create_function('$a', 'return trim($a)!=="";'));
        $filtered_and_trimmed_array = array();
        foreach ($filtered_array as $k => $v) {
            if (!is_array($v) && !is_object($v)) {
                $filtered_and_trimmed_array[$k] = htmlspecialchars(trim($v));
            }
            if (is_array($v)) {
                $filtered_and_trimmed_array[$k] = $this->sanitize_array($v);
            }
        }
        return $filtered_and_trimmed_array;
    } else {
        return false;
    }
}
它给了我以下错误:

g:trim()期望参数1是字符串,数组在/home/imgimportsinc/public_html/img_scripts_library/img_functions.php(328):运行时在第1行创建的函数中给出

警告:trim()要求参数1为字符串,数组在/home/imgimportsinc/public_html/img_scripts_library/img_functions.php(328):运行时在第1行创建的函数中给出


在修剪之前,只需检查要计算的值是否为字符串

$filtered_array = array_filter($array, function($v) {
    return !is_string($v) || (is_string($v) && trim($v) !== "");
});

错误日志已足够清晰
trim()
需要的是字符串而不是数组。顺便问一下,谁在使用
create\u函数
?只要在数组为true时使用closure,就可以尝试递归$v…..旁注:
trim(0)==“
真的