$x ) { $b = array_slice($a,0,$x,true); $b[] = $a[$x+1]; $b[] = $a[$x]; $b += array_slice($a,$x+2,count($a),true); return($b); } else { return $a; } } function up($a,$x) { if( $x > 0 and $x < count($a) ) { $b = array_slice($a,0,($x-1),true); $b[] = $a[$x]; $b[] = $a[$x-1]; $b += array_slice($a,($x+1),count($a),true); return($b); } else { return $a; } } // Start print_r($a); /* Output Array ( [0] => a [1] => b [2] => c [3] => d [4] => e ) */ // Move item 4 up print_r(up($a,4)); /* Output Array ( [0] => a [1] => b [2] => c [3] => e [4] => d ) */ // Move item 0 down print_r(down($a,0)); /* Output Array ( [0] => b [1] => a [2] => c [3] => d [4] => e ) */ // Test, move the bottom item down (ie. do nothing) print_r(down($a,4)); /* Output Array ( [0] => a [1] => b [2] => c [3] => d [4] => e ) */ // Test, move the top item up (ie. do nothing) print_r(up($a,0)); /* Output Array ( [0] => a [1] => b [2] => c [3] => d [4] => e ) */