您的位置:首页 > 编程语言 > PHP开发

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

2017-10-20 23:42 453 查看
当交换的为数字时:

<?php
/**
* 双方变量为数字时,可用交换方法五
* 使用加减运算符,相当于数学运算了^_^
*/
$a = 1; // a变量原始值
$b = 2; // b变量原始值
echo '交换之前 $a 的值:'.$a.', $b 的值:'.$b,'<br>'; // 输出原始值
$a=$a+$b; // $a $b和值
$b=$a-$b; // 不解释..
$a=$a-$b; // 不解释..
echo '交换之后 $a 的值:'.$a.', $b 的值:'.$b,'<br>'; // 输出结果值


运行结果:

     交换之前 $a 的值:1, $b 的值:2

     交换之后 $a 的值:2, $b 的值:1

当交换的为字符串时:
一、异或

<?php
/**
* 双方变量为字符串或者数字时,可用交换方法四
* 使用异或运算
*/
$a = "This is A"; // a变量原始值
$b = "This is B"; // b变量原始值
echo '交换之前 $a 的值:'.$a.', $b 的值:'.$b,'<br>'; // 输出原始值
/**
* 原始二进制:
* $a:010101000110100001101001011100110010000001101001011100110010000001000001
* $b:010101000110100001101001011100110010000001101001011100110010000001000010
*
* 下面主要使用按位异或交换,具体请参照下列给出的二进制过程,
*/
$a=$a^$b; // 此刻$a:000000000000000000000000000000000000000000000000000000000000000000000011
$b=$b^$a; // 此刻$b:010101000110100001101001011100110010000001101001011100110010000001000001
$a=$a^$b; // 此刻$a:010101000110100001101001011100110010000001101001011100110010000001000010
echo '交换之后 $a 的值:'.$a.', $b 的值:'.$b,'<br>'; // 输出结果值


运行结果:

     交换之前 $a 的值:This is A, $b 的值:This is B

     交换之后 $a 的值:This is B, $b 的值:This is A
二、str_replace

<?php
/**
* 双方变量为字符串时,可用交换方法二
* 使用str_replace()方法达到交换变量值得目的
* 此方法较第一种,逻辑上稍微简单点
*/
$a = "This is A"; // a变量原始值
$b = "This is B"; // b变量原始值
echo '交换之前 $a 的值:'.$a.', $b 的值:'.$b,'<br>'; // 输出原始值
$a .= $b; // 将$b的值追加到$a中
$b = str_replace($b, "", $a); // 在$a(原始$a+$b)中,将$b替换为空,则余下的返回值为$a
$a = str_replace($b, "", $a); // 此时,$b为原始$a值,则在$a(原始$a+$b)中将$b(原始$a)替换为空,则余下的返回值则为原始$b,交换成功
echo '交换之后 $a 的值:'.$a.', $b 的值:'.$b,'<br>'; // 输出结果值


运行结果:

     交换之前 $a 的值:This is A, $b 的值:This is B

     交换之后 $a 的值:This is B, $b 的值:This is A
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: