ksort($prova);

$find_prec = false;
$find_succ = false;
$succ = array();


//Prenediamo il valore immediatamente prima

foreach($prova as $ind=>$elem)
{
if ($ind < $tuo_valore)
{
$find_prec = true;
$prec = $elem;
}
else break; //Siccome l'array è ordinato sulla chiave vuol dire che da questo punto in poi
//tutte le chiavi saranno maggiori di $tuo_valore
}


if ($find_prec === true)
{
//Prenediamo il valore immediatamente dopo

foreach($prova as $ind=>$elem)
{
if ($ind > $tuo_valore)
{
//Non appena incontriamo il primo valore + grande di $tuo_valore quello è il successivo
//e, quindi, terminiamo il ciclo

$find_succ = true;
$succ[0] = $elem;
break;
}
}
}
else
{
//Prenediamo due valori immediatamente dopo

foreach($prova as $ind=>$elem)
{
if ($ind > $tuo_valore)
{
$find_succ = true;

//Vediamo se è il primo valore + grande di $tuo_valore ke incontriamo o il secondo

if (count($succ) == 0) $succ[0] = $elem;
else
{
$succ[1] = $elem;
break;
}
}
}
}


//A questo punto hai 5 combinazioni:

- Se $succ contiene 2 elementi allora hai preso i 2 successivi
- $succ contiene 1 elemento e $find_prec = false allora c'è solo 1 successivo
- $succ contiene 1 elemento e $find_prec = true allora c'è 1 successivo ed 1 precedente
- $succ contiene 0 elementi e $find_prec = false allora non c'è successivo e precedente
- $succ contiene 0 elementi e $find_prec = true allora c'è solo il precedente