Devi lavorare per riferimento e non per valore. Modifica così:
Codice PHP:
<?php
$keys = array('a','b','3','d','e','f','g');
function recover(&$array,$index,$offset)
{
$ch='';
$len = count($array);
$index=$index+$offset;
//elimino l'elemento in quella posizione
if(abs($index)>=$len)
{
$pos = $index%$len;
}
else
{
$pos = $index;
}
$ch = $array[$pos];
unset($array[$pos]);
$array = array_values($array);
return $ch;
}
print_r($keys);
echo "
";
$a = recover($keys,'3','0');
echo $a."
";
print_r($keys);
echo "
";
$b = recover($keys,'3','0');
echo $b."
";
print_r($keys);
echo "
";
?>
Se noti, ho aggiunto & al parametro in inputr alla funzione. In tal modo lo passi per riferimento e non per valore e le modifiche apportate nella funzione si ripercuotono sull'array originale.