2013-08-21 4 views
7

voglio condividere 1 domanda che viene chiesto il più delle volte nelle interviste e non ero in grado di e rispondere a questa domanda, ma alla fine ho trovato la risposta:Swap valore di due variabili senza utilizzare terza variabile in php

Come scambiare 2 valori variabili senza utilizzare la terza variabile ??

+1

@ShankarDamodaran Oops, mi dispiace, non ne sono a conoscenza, ho pensato che non fosse in StackOverflow, è per questo che l'ho condiviso! – Jay

+0

Nessun problema. Sono contento che tu abbia trovato la soluzione. –

+0

Ho anche avuto quel tipo di intervista, sono molto stupidi IMO, come possono giudicare quanto sei bravo nella tua zona con cose così futili? – itsjavi

risposta

32

Questo metodo funziona per qualsiasi tipo di variabile:

$a = 5; 
$b = 6; 
list($a, $b) = array($b, $a); 
print $a . ',' . $b; 

uscita:

6,5 

Un altro modo semplice (che funziona solo per i numeri, non stringhe/array/etc) è

$a = $a + $b; // 5 + 6 = 11 
$b = $a - $b; // 11 - 6 = 5 
$a = $a - $b; // 11 - 5 = 6 
print $a . ',' . $b; 

Uscita:

6,5 
+2

$ b = $ a + $ b - ($ a = $ b); –

+0

Ottimo lavoro jay .. !! – Ritesh

+0

@mjolnic fa variabili e oggetti diversi o uguali? , qui la domanda riguarda le variabili ma non gli oggetti. –

8

Sicuramente vuoi il XOR swap algorithm? Almeno per variabili numeriche.

Lo scambio convenzionale richiede l'uso di una memoria temporanea variabile. Utilizzando l'algoritmo di scambio XOR, tuttavia, non è necessaria alcuna memoria temporanea . L'algoritmo è il seguente:

X: = X XOR Y

Y: = X XOR Y

X: = X XOR Y

Anche se non ho mai visto in passato in scenari reali (al di là del lavoro degli assemblatori)

+0

è troppo difficile da implementare, poiché vogliamo un approccio più semplice per operazioni semplici, come lo scambio di variabili. – Raptor

+3

Quanto è difficile $ a xor $ b? –

+0

Downvoted perché? –

Problemi correlati