不用第三个变量,交换变量的值

思路:
将2个变量拼接到$a变量,然后截取字符串。

$a = 100;
$b = 2221113;

//拼接两个字符串
$a .= $b;

//$b变量拼接在$a变量后,我们先将$a变量的值截图给$b变量。
// 截取的起始位置0
//截取的长度是$a变量-$b变量的长度 也就等于 $变量的长度
$b = substr($a, 0, strlen($a) - strlen($b));

//将拼接在$a变量中的$b变量的值截取出来
//起始位置:上面$b变量已经截取出$a的值,所有起始位置是$b变量的长度
//截取的长度就是$a变量减去$b变量的长度也就等于截取$b变量的长度
$a = substr($a, strlen($b), strlen($a) - strlen($b));

echo $b;
echo '=======';
echo $a;

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 5

记得以前看到过一个用异或操作来交换的,会更简洁

5年前 评论

@mlover 我刚看了下,的确。
设a = 14;a的二进制数: 01110;
b = 21; b的二进制数10101;
a = a^b = 11011;
b = b^a = (10101)^(11011) = 01110;
a = a^b = (11011)^(01110) = 10101;
a = 21 ,b = 14;a,b值交换

5年前 评论
guijianshi

list($a, $b) = [$b, $a];
你要这样的骚操作?

5年前 评论
licxisky 5年前

数组函数操作很舒服吧 list()

5年前 评论
    $a = 123;
    $b = 456;
    $a = $b - $a;

    $b = $b - $a;
    $a = $b + $a;
    echo  $a,$b;

不谢

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!