递归函数中清空静态变量

函数中如果定义了静态变量,每次对函数的调用返回的数据都会保存,不会清空,所以使用下面的方法可以使函数每次调用前的数据都是空的状态。

/**
 * 函数中清空静态变量
 * $i 第一次为空,会清空静态变量,下次调用时已经++ ,故不会在清空
 */
function array_multi2single($array, $i = 0) 
{ 
    static $result_array=array(); 
    
    if(empty($i))
    {
        $result_array = array();
    }    
    
    foreach($array as $key=>$value) 
    { 
        if(is_array($value)) 
        { 
            
            $i ++;
            array_multi2single($value, $i); 
        } 
        else  
            $result_array[$key]=$value; 
    } 
    return $result_array; 
} 

$a = array('a'=>array('b'=>'b'));

print_r(array_multi2single($a));


$b = array('a'=>array('bb'=>'bb'));

print_r(array_multi2single($b));

本文转自:http://www.cnblogs.com/siqi/archive/2013/05/30/3107334.html

posted @ 2017-08-07 16:35  坚持一点点  阅读(1155)  评论(0编辑  收藏  举报