2

这是一个例子。

public function jscss($module)
    {
    if (is_array($module))
    {
        foreach ($module as $val)
        {
            $this->jscss($val);
        }
        return;
    }

    if ( ! $module)
    {
        return;
    }

    if(in_array($module, $this->_loaded_jscss_modules)) return;

    array_push($this->_loaded_jscss_modules, $module);
    $this->_loaded_jscss_modules = array_flip(array_flip($this->_loaded_jscss_modules)); // <-- Right this part where i am talking about

    $aSrc = array();

    //css
    foreach($this->_jscss_modules as $key => $val)
    {
        if(in_array($key, $this->_loaded_jscss_modules) && isset($val['css']) )
            foreach($val['css'] as $css)
                $aSrc[] = '<link rel="stylesheet" href="'.$css.'" type="text/css" />';
    }

    //js
    foreach($this->_jscss_modules as $key => $val)
    {
        if(in_array($key, $this->_loaded_jscss_modules) && isset($val['js']) )
            foreach($val['js'] as $js)
                $aSrc[] = '<script type="text/javascript" src="'.$js.'"></script>';
    }

    $vars['jscss_src'] = "\n".implode("\n",$aSrc)."\n";
    $this->vars($vars);

}

您可以在我评论过的地方看到使用了两次的 array_flip。为什么使用函数 array_flip 两次?

4

2 回答 2

2

它可能用作过滤机制。根据文档。用于重复数据删除和删除非字母数字值。

请注意,trans 的值必须是有效的键,即它们需要是整数或字符串。如果值的类型错误,则会发出警告,并且有问题的键/值对不会包含在结果中。

如果一个值多次出现,最新的键将被用作它的值,其他的都将丢失

于 2013-07-25T07:31:37.663 回答
0

array_flip() 以翻转顺序返回一个数组,即来自 trans 的键成为值,来自 trans 的值成为键。

请注意,trans 的值必须是有效的键,即它们需要是整数或字符串。如果值的类型错误,则会发出警告,并且有问题的键/值对不会包含在结果中。

如果一个值多次出现,最新的键将被用作它的值,所有其他的都将丢失。所以在这里它删除了重复的值,当你翻转两次时,首先它删除重复的值并在第二次翻转中交换键和值,它再次交换值和键(因此与原始数组相同,除了它删除所有重复值)

参考:http ://php.net/manual/en/function.array-flip.phpf :

于 2013-07-25T07:40:31.340 回答