这是一个例子。
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两次?
答案 0 :(得分:2)
它可以用作过滤机制。基于文档。用于重复数据删除和删除无字母数字值。
请注意,trans的值必须是有效密钥,即它们需要 是整数还是字符串。如果值有,则会发出警告 错误的类型,以及有问题的键/值对将不会 包含在结果中。
如果值有多次出现,则最新的密钥将用作其值 价值,所有其他人都将丢失
答案 1 :(得分:0)
array_flip()以翻转顺序返回一个数组,即来自trans的键成为值,而来自trans的值成为键。
请注意,trans的值必须是有效键,即它们必须是整数或字符串。如果值的类型错误,将发出警告,并且相关的键/值对将不包含在结果中。
如果值有多次出现,则最新的密钥将用作其值,而所有其他密钥将丢失。 所以这里它删除了重复的值,当你翻转两次时,首先它删除重复的值并在第二次翻转时交换键和值再次交换值和键(因此它变得与原始数组相同,除了它删除所有dupliacte值)