PHP交换两个变量的值,不使用第三个变量
2017-10-20 23:42
453 查看
当交换的为数字时:
运行结果:
交换之前 $a 的值:1, $b 的值:2
交换之后 $a 的值:2, $b 的值:1
当交换的为字符串时:
一、异或
运行结果:
交换之前 $a 的值:This is A, $b 的值:This is B
交换之后 $a 的值:This is B, $b 的值:This is A
二、str_replace
运行结果:
交换之前 $a 的值:This is A, $b 的值:This is B
交换之后 $a 的值:This is B, $b 的值:This is A
<?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
相关文章推荐
- php-----不是使用第三个变量,交换两个变量
- php面试题不使用第三个变量交换两个变量的值
- PHP 不使用第三个变量实现交换两个变量的值
- 交换两个变量的值不使用第三个变量
- 也论不使用第三个变量交换两个变量的值[C#]
- [Java,JS] - 不使用第三个变量完成两个整数的交换
- 交换两个变量值,但不使用第三个变量的算法
- 不使用第三个变量交换两个数值。
- 交换两个变量的值不使用第三个变量(Java)
- 交换两个变量的值,不使用第三个变量
- 交换两个变量的值,不使用第三个变量
- 不使用第三个变量实现两个整数之间的交换
- 交换两个变量值,但不使用第三个变量的算法
- 交换两个变量的值,不使用第三个变量
- PHP 不使用新变量而交换现有两个变量的值
- 不使用第三个变量的情况下交换两个变量中存储的值(Java)
- 交换两个变量的值,不使用第三个变量
- 不使用第三个变量,实现两个变量值的交换
- 不使用第三个变量,实现交换两个变量的值
- 不使用第三个变量交换两个int类型变量的值