
06.08.2009, 21:11
|
|
Он хакер.
Регистрация: 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>0 ? 1 : -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;
}
}
|
|
|