2

我正在为清理多维数组而编写的函数的最后一步而苦苦挣扎。我希望函数循环遍历数组(和任何子数组),然后返回一个清理过的数组。

虽然我可以array_walk_recursive用来输出清理后的数据,但我正在努力将数据作为与输入相同结构的数组返回。任何人都可以帮忙吗?任何帮助都非常感谢....

这是我的代码:

function process_data($input){
    function clean_up_data($item, $key)
    {
        echo strip_tags($item) . ' '; // This works and outputs all the cleaned data
        $key = strip_tags($item);     // How do I now output as a new array??
        return strip_tags($item);
    }
    array_walk_recursive($input, 'clean_up_data');
}

$array = process_data($array);  // This would be the ideal usage
print_r($array);  // Currently this outputs nothing
4

2 回答 2

2

您需要通过引用传递值

function clean_up_data(&$item, $key)
于 2013-09-09T10:23:42.550 回答
2

你可以array_walk_recursive这样使用:

<?php
$arr = array(...);
function clean_all($item,$key)
{
$item = strip_tags($item);
}
array_walk_recursive($arr , 'clean_all');
?>

或者 :

这是一个递归函数,我认为它可以解决您的问题:

<?php
    function clean_all($arr)
    {
    foreach($arr as $key=>$value)
    {
       if(is_array($value)) $arr[$key] = clean_all($value);
       else  $arr[$key] = strip_tags($value);
    }
    return $arr;
    }

     ?>
于 2013-09-09T10:24:29.413 回答