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