ммм... все равно какой то гон получается.
Расмотрим пример:
$arr = array(
1 => 44,
2 => 324,
34 => 23,
4 => 6544,
56 => 44,
345 => 44574,
56 => 4794
);
$a=array_keys($arr);
$key=array_search(4, $a);
$prev=$key-1;
$next=$key+1;
echo $prev."|".$next."|".$key;
выводит: 2|4|3.
Чтото не то. Вот задачка интересная вышла.