Skip to content

Instantly share code, notes, and snippets.

@kuzuha
Created January 11, 2013 08:13
Show Gist options
  • Save kuzuha/4508850 to your computer and use it in GitHub Desktop.
Save kuzuha/4508850 to your computer and use it in GitHub Desktop.
<?php
function array_slide(&$array, $key, $amount) {
if ($amount === 0) {
return;
}
$keys = array_keys($array);
$values = array_values($array);
$target = array($keys[$key] => $values[$key]);
$left = array_slice($array, 0, $key);
$right = array_slice($array, $key + 1);
if ($amount > 0) {
if ($amount > count($right)) {
$amount = count($right);
}
$right_left = array_slice($right, 0, $amount);
$right_right = array_slice($right, $amount);
$right = $right_left + $target + $right_right;
} else ($amount < 0) {
$amount = $key + $amount;
if ($amount < 0) {
$amount = 0;
}
$left_left = array_slice($left, 0, $amount);
$left_right = array_slice($left, $amount);
$left = $left_left + $target + $left_right;
}
$array = $left + $right;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment