PHP两个变量值互换(不用第三变量)

一、substr() && strlen()

代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
/**
  * 双方变量为字符串时,可用交换方法一
  * 使用substr()结合strlen()两个方法达到交换变量值得目的
  */
$a = "This is A" ; // a变量原始值
$b = "This is B" ; // b变量原始值
echo '交换之前 $a 的值:' . $a . ', $b 的值:' . $b , '<br>' ; // 输出原始值
$a .= $b ; // 将$b的值追加到$a中
/**
  * $b得到$a值详解:
  *  先通过strlen()分别计算出$a和$b中字符串的长度【此时$a是原始$a和$b的合值】
  *  通过strlen($a)-strlen($b)即可得出原始$a的值长度
  *  在通过substr()方法在合并后的$a中从0开始截取到$a的长度,那么即可得到原始$a的值
  * $a得到$b值详解:
  *  由于此刻$b已经是$a的原始值了,而$a合并后的值为原始$a+原始$b的值,故用substr()在$a中从$b(原始$a)长度位置截取,则去的内容则为原始$b,则将$b值付给$a成功
  */
$b = substr ( $a ,0,( strlen ( $a )- strlen ( $b )));
$a = substr ( $a , strlen ( $b ));
echo '交换之后 $a 的值:' . $a . ', $b 的值:' . $b , '<br>' ; // 输出结果值

运行结果:

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

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

二、str_replace()

代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<?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

三、list() && list()

代码:

?
1
2
3
4
5
6
7
8
9
10
11
<?php
/**
  * 双方变量为字符串时,可用交换方法三
  * 使用list()和array()方法达到交换变量值得目的
  * 此方法较第一、二种,代码最简洁
  */
$a = "This is A" ; // a变量原始值
$b = "This is B" ; // b变量原始值
echo '交换之前 $a 的值:' . $a . ', $b 的值:' . $b , '<br>' ; // 输出原始值
list( $b , $a ) = array ( $a , $b ); // list() 函数用数组中的元素为一组变量赋值。了解这个,相信其他的不用我多说了吧
echo '交换之后 $a 的值:' . $a . ', $b 的值:' . $b , '<br>' ; // 输出结果值

运行结果:

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

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

四、异或

代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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

五、加(+)减(-)运算符

代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
<?php
/**
  * 双方变量为数字时,可用交换方法五
  * 使用加减运算符,相当于数学运算了^_^
  */
$a = "This is A" ; // a变量原始值
$b = "This is B" ; // 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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在C语言中不引入第三个变量的前提下交换两个变量,有两种常见的方法可以实现。 第一种方法是使用算术运算符。可以使用加法和减法来交换变量。首先,将变量a与变量b相加并将结果赋给变量a,然后将变量b的减去原来的a的并将结果赋给变量b,最后将变量a的减去原来的b的并将结果赋给变量a。这样就成功地交换了两个变量。代码示例如下: int a = 3, b = 5; a = a + b; b = a - b; a = a - b; 第二种方法是使用位运算符。可以使用异或运算来交换变量。首先,将变量a与变量b进行异或操作并将结果赋给变量a,然后将变量b与新的a进行异或操作并将结果赋给变量b,最后将变量a与新的b进行异或操作并将结果赋给变量a。这样就成功地交换了两个变量。代码示例如下: int a = 3, b = 5; a = a ^ b; b = a ^ b; a = a ^ b; 以上就是在C语言中不引入第三个变量的前提下交换两个变量的两种常见方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【C语言】不使用第三个变量,交换两个变量](https://blog.csdn.net/m0_74121788/article/details/128474663)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值