Dziś pokaże Wam prosty sposób, w jaki możemy zamienić dwie zmienne wartościami, nie używając do tego pomocniczej zmiennej.

Pierwsze rozwiązanie jakie może się nasuwać do głowy to takie, które prezentuje poniżej:

function change (&$a, &$b) {

	$tmp = $a;
	$a = $b;
	$b = $tmp;

}

$a = 1;
$b = 3;

echo 'wartosc a: '.$a.'wartosc b: '.$b.'

';

change($a,$b);

echo 'wartosc a: '.$a.'wartosc b: '.$b;

Chyba nie wymaga to dodatkowych wyjaśnień.
Przejdźmy do bardziej ambitnego rozwiązania, bez użycia zmiennej $tmp.

function change2 (&$a, &$b) {

	$a = $a ^ $b;
	$b = $a ^ $b;
	$a = $a ^ $b;

}

$a = 1;
$b = 3;

echo 'wartosc a: '.$a.'wartosc b: '.$b.'

';

change2($a,$b);

echo 'wartosc a: '.$a.'wartosc b: '.$b;

Wszystko to dzięki dzięki operatorowi binarnemu XOR.
UWAGA! Zastosowanie tylko dla liczb calkowitych.

3 Odpowiedzi : “szybka zamiana wartości dwóch zmiennych”

  1. Shreeve napisał:

    A może jeszcze szybciej w taki sposób:

  2. Shreeve napisał:

    list($x, $y) = array($y, $x);

  3. Ralf napisał:

    Tak, zdecydowanie :) Opisane przeze mnie rozwiązanie nie ogranicza się wyłącznie do PHP.

Pozostaw Odpowiedź