php howto unset static var

ali*_*gur 0 php

我有这样的功能.我想重置$ output var first call.

function create_tree($tree_array, $reset = TRUE, $ul_class = FALSE) {

    if($reset) unset($output); // NOT WORK!!!

    static $output = '';

    $class = '';
    if ($ul_class) {
        $class = ' class="' . $ul_class . '"';
    }
    $output .= '<ul' . $class . '>' . PHP_EOL;

    foreach ($tree_array as $v) {

        $output .= '<li><a href="'  . site_url_i18n($v['link']) . '">' . $v['name'] . '</a>' . PHP_EOL;;

        if (isset($v['children'])) {
            create_tree($v['children'], false);
        }

        $output .= '</li>' . PHP_EOL;
    }

    $output .= '</ul>' . PHP_EOL;

    return $output;
}
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 6

$output在函数中的那个点上并没有神奇地存在; 当再次看到声明时,它神奇地保留了它的价值.

if ($reset)
   $output = '';
Run Code Online (Sandbox Code Playgroud)

  • 我还建议将`static`语句放在第一位:`static $ output =''; if($ reset)$ output ='';`它通常更具可读性. (3认同)