Hola, bueno... de algo si estoy seguro.. si tienes una variable fuera de tu función y la quieres usar adentro, debes usar: global $variable;
En cuanto a tu función, pues no produciria ningun resultado ya que $a, y $b que estàs pasando como parametros no los usas dentro de la función.
Creo que forzosamente tendrás que usar el global. Por que dices que no sería limpio? jeje
Ya me quede con la intriga de lo que estás haciendo, podrías postear tu código... es que por lo que dices.. no veo la necesidad de hacer una función. Imagino que debes hacer muchas veces el cambio de valores, estas con un for o en varias partes del código quieres hacer el cambio o que onda? jeje
![sonriente](http://static.forosdelweb.com/fdwtheme/images/smilies/smile.png)
y a mi se me ocurre esto:
Código PHP:
<?php
$pepe = 1;
$juan = 2;
$a = 'pepe';
$b = 'juan';
function swap($var1, $var2){
global $$var1, $$var2;
$aux = $$var1;
$$var1 = $$var2;
$$var2 = $aux;
}
swap($a,$b);
echo " \$pepe = ". $pepe . " \$juan = " . $juan;
?>
ó bien:
Código PHP:
<?php
$pepe = 1;
$juan = 2;
function swap(){
global $pepe $juan;
$aux = $pepe;
$pepe = $juan;
$juan = $aux;
}
swap();
echo " \$pepe = ". $pepe . " \$juan = " . $juan;
?>
pero no se exactamente cómo lo tengas que usar... por eso mi duda sobre el contexto donde vas a usar este código.