Hola
adicional a lo que ya te comentaron, fijate que $p va antes del llamado a la función, si no se hace de ese modo el elemento del array pasaría de ser 2 a ser NULL
ahora, si además de convertir el array, quieres que $p obtenga el valor anterior del array, podrías tener esto
Código php:
Ver original$p=10;
prueba($g,$p);
function prueba(&$arr,&$var)
{
$tmp = $arr[1];
$arr[1] = $var;
$var = $tmp;
}
echo $p;
y si luego piensas en que sería mejor que la posición del array fuese dinámica, pues agregar otro parámetro a la función que sea la posición a modificar del array
saludos