为什么使用array_flip两次?

时间:2013-07-25 07:28:28

标签: php arrays codeigniter flip

这是一个例子。

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两次?

2 个答案:

答案 0 :(得分:2)

它可以用作过滤机制。基于文档。用于重复数据删除和删除无字母数字值。

  

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

     

如果值有多次出现,则最新的密钥将用作其值   价值,所有其他人都将丢失

答案 1 :(得分:0)

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

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

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

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