2013-07-25 3 views
2

вот пример.Зачем использовать array_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

его можно использовать как механизм фильтрации. на основе документации. для дедупликации и удаления каких-либо буквенно-цифровых значений.

Обратите внимание, что значения trans должны быть действительными ключами, то есть они должны быть либо целыми, либо строковыми. Предупреждение будет выдано, если значение имеет неправильный тип, а соответствующая пара ключ/значение не будет , включенной в результат.

Если значение имеет несколько вхождений, последний ключ будет использоваться в качестве значения , а все остальные будут потеряны

+0

Могу ли я задать вам еще один вопрос? В конце примера, каково значение выражения «$ this-> vars ($ vars)» в последней строке? – nextdoordoc

+0

его вызов функции, называемой 'vars и передающей' $ vars' в нее – DevZer0

0

array_flip() возвращает массив в оборотной порядке, то есть ключи от транса становится значением и значения из ключей trans становятся.

Обратите внимание, что значения trans должны быть действительными ключами, то есть они должны быть целыми или строковыми. Предупреждение будет выдано, если значение имеет неправильный тип, а соответствующая пара ключ/значение не будет включена в результат.

Если значение имеет несколько вхождений, в качестве его значения будет использоваться последний ключ, а все остальные будут потеряны. Итак, здесь он удаляет повторяющиеся значения. Когда вы дважды переворачиваете, сначала он удаляет повторяющиеся значения и меняет ключ, а значения во втором переводе он снова обменивается значением и ключом (So становится таким же, как исходный массив, за исключением того, что он удаляет все значения dupliacte)

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

 Смежные вопросы

  • Нет связанных вопросов^_^