2013-03-06 42 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

相关问题