在PHP中交换两个变量的值

4
我想知道在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"
?>

那么,它存在吗?我进行了搜索,但没有找到结果。提前感谢。


function MakeSubstitution($a,$b) { $t = $a; $a = $b; $b = $a }。完成了吗? - Brad Christie
1
你想交换两个变量的值吗?这有什么用例?在调用者的范围内编写自己的方法(查看上面的Brad Christie - 如果要修改它们,请不要忘记接受变量作为引用)。 - Colin M
你真的期望为这么简单的问题编写一个函数吗?等到事情变得复杂起来,你就必须要自己写一个200多行的算法了。 - Shoe
我知道只需要几行代码就足够了,但是你知道,PHP会简化简单的事情,我认为有一个函数可以完成。没问题... - robytur
2个回答

16
尝试这个:
$a = "Cat";
$b = "Dog";

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

echo $a;
echo $b;

2
这绝对是我最喜欢的答案,因为“函数”只保留在一行中。也感谢其他人。 - robytur

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'

显然,您也可以使用位运算符,避免创建临时函数/变量/数组的开销:

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

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

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

我找到了一张非常好的按位操作的图示:https://dev59.com/o3VC5IYBdhLWcg3wliGe#528946


1
这实际上是应该被接受的答案。没有数组,没有其他函数,只有简单的赋值语句。这可能也是最快的方法。 - Shoe
是的,这个函数确切地描述了我需要做的事情。唯一的缺点是你需要编写这个函数。 - robytur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接