Показать сообщение отдельно

  #5  
Старый 06.08.2009, 21:11
m0Hze
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
С нами: 9223466

Репутация: 3171


По умолчанию

PHP код:
move_array_element($input'b'2);          /* сдвинуть элемент с ключом 'b' на 2 позиции "вперед" */ 
Сама функция
PHP код:
unction move_array_element(&$array$element_key$offset$bubble_effect=true)
{
        if (empty(
$array) || !is_array($array))
                return 
false;
        if (!
array_key_exists($element_key$array))
                return  
false;
        
$offset=(int)$offset;
        if (
$offset===0)
                return 
false;
        
// get keys and determine positions
        
$keys=array_keys($array);
        
$element_position=array_shift(array_keys($keys$element_key));
        
$last_position=array_pop(array_keys($keys));
        
$new_position=$element_position+$offset;
        if (
$new_position<0)
                
$new_position=0;
        if (
$new_position>$last_position)
                
$new_position=$last_position;
        
// exchange keys
        
if ((abs($offset)===1) || ($bubble_effect!==true))
                return 
exchange_array_elements($array$keys[$element_position], $keys[$new_position]);
        else
        {
                
$offset_increment=$offset>: -1;
                
$buffer_position=$element_position;
                while (
$buffer_position!==$new_position)
                {
                        
$keys=array_keys($array);
                        
exchange_array_elements($array$keys[$buffer_position], $keys[$buffer_position+$offset_increment]);
                        
$buffer_position+=$offset_increment;
                }
                return 
true;
        }

 
Ответить с цитированием