2013-03-06 67 views
4

我想知道是否可以在PHP中使用兩個變量的值之間的替代在PHP中的兩個變量的值之間進行替換

我可以更好地解釋:

<?php 
    $a = "Cat"; 
    $b = "Dog"; 

    // The strange/non-existent function I am talking about // 
    MakeSubstitution($a, $b); 

    // After this (non-existent) function the values of the variables should be: 
     // $a = "Dog" 
     // $b = "Cat" 
?> 

所以,它存在嗎?我進行了搜索,但沒有找到任何結果。 在此先感謝。

+0

'function MakeSubstitution($ a,$ b){$ t = $ a; $ a = $ b; $ b = $ a}'。完成了嗎? – 2013-03-06 13:27:42

+1

你想交換兩個變量的值嗎?這是什麼用例?編寫你自己的方法(看看上面的Brad Christie - 不要忘記接受變量作爲參考,如果你想修改它們)在調用者的範圍內 – 2013-03-06 13:28:01

+0

你真的期待一個函數來處理這樣一個小問題嗎?男人,等到事情變得複雜,你必須編寫自己的200多行算法。 – Shoe 2013-03-06 13:30:35

回答

16

試試這個:

$a = "Cat"; 
$b = "Dog"; 

list($a,$b) = array($b,$a); 

echo $a; 
echo $b; 
+2

+1只是爲了以獨特的方式使用list()。 – 2013-03-06 13:28:23

+1

用於播放我的答案。迅速刪除! – christopher 2013-03-06 13:28:36

+2

這絕對是我最喜歡的答案,因爲「功能」只保留在一行中。也感謝其他人。 – 2013-03-06 13:42:44

6

在函數引用處理它們,並交換它們的值:

function swap (&$a, &$b) { 
    $t = $a; // Create temp variable with value of $a 
    $a = $b; // Assign to $a value of $b 
    $b = $t; // Assign to $b value of temp variable 
} 

$dog = "dog"; 
$cat = "cat"; 

swap($dog, $cat); 

echo $dog; // Output 'cat' 

顯然,你可以使用位運算符太,並避免創建的開銷臨時函數/ var/array:

$cat = "cat"; 
$dog = "dog"; 

$cat = $cat^$dog; 
$dog = $cat^$dog; 
$cat = $cat^$dog; 

echo $cat . $dog; // Output 'dogcat' 

設法找到按位方法:https://stackoverflow.com/a/528946/54680

+1

這實際上是應該接受的答案。沒有數組,沒有其他功能,只是簡單的分配。這可能是最快的。 – Shoe 2013-03-06 13:32:00

+0

是的,這是描述我需要做什麼的功能。唯一的缺點是你需要編寫這個函數。 – 2013-03-06 13:39:01

相關問題