PHP不用第三个变量交换两个变量的值的方法总结
发布:smiling 来源: PHP粉丝网 添加日期:2015-04-13 10:43:47 浏览: 评论:0
变量交换我们用到最多的就是比较数据了,但我们在面试时会碰到要不用第三个变量交换两个变量的值了,下面来给各位总结一些方法.
“PHP不用第三个变量交换两个变量的值”这个题看到过好多次了,看来面试确实喜欢考这道题,今天,对于这个题目,我自己总结了几种方法,可能不全,大家来互相补充.
方法一:使用字符串截取
- <?php
- $a = "fsdfds";
- $b = "xiaorui";
- $a = $a.$b;
- $b = substr($a,0,strlen($a)-strlen($b));
- $a = substr($a,strlen($b));
- echo $a."-".$b;
- ?>
方法二:使用list()
- <?php
- $a = "php";
- $b = "java";
- //list()不是函数,是语言结构,它是将数组中的值赋给一些变量
- list($a,$b) = array($b,$a);
- echo $a.'---'.$b; //java---php
- ?>
方法三:使用数组分割
- <?php
- $a = "fsdfds";
- $b = "xiaorui";
- $b = $a."#$".$b;
- $b = explode("#$",$b);
- $a = $b[1];
- $b = $b[0];
- echo $a."-".$b;
- ?>
说明:这种方法也可以用于交换两个变量的值,但是这个方法听说好像不太标准,因为有人说这里的数组$b也算是一个新变量了,我有点不同意,看怎么理解了.
方法四:使用异或运算
- <?php
- $a = "fsdfds";
- $b = "xiaorui";
- $a = $a^$b;
- $b = $b^$a;
- $a = $a^$b;
- echo $a."-".$b;
- ?>
说明:这个方法是网上看到的,我仔细试了一下,发现这个居然是有BUG的,用次方法只能交换字符相同的两个字符串型的变量,不然结果是不正确的.
网上又找到一些方法,代码如下:
- //字符串版本 结合使用substr,strlen两个方法实现
- $a="a";
- $b="b";
- echo '交换前 $a:'.$a.',$b:'.$b.'<br />';
- $a.=$b;
- $b=substr($a,0,(strlen($a)-strlen($b)));
- $a=substr($a, strlen($b));
- echo '交换后$a:'.$a.',$b:'.$b.'<br />';
- echo '-----------------------<br/>';
- //字符串版本 使用str_replace方法实现
- $a="a";
- $b="b";
- echo '交换前 $a:'.$a.',$b:'.$b.'<br />';
- $a.=$b;
- $b=str_replace($b, "", $a);
- $a=str_replace($b, "", $a);
- echo '交换后$a:'.$a.',$b:'.$b.'<br />';
- echo '-----------------------<br/>';
- //字符串版本 结合使用list方法和array实现
- $a="a";
- $b="b";
- echo '交换前 $a:'.$a.',$b:'.$b.'<br />';
- list($b,$a)=array($a,$b);
- echo '交换后$a:'.$a.',$b:'.$b.'<br />';
- echo '-----------------------<br/>';
- //字符串和数字都适用 使用异或运算
- $a='a';
- $b='b';
- echo '交换前 $a:'.$a.',$b:'.$b.'<br />';
- $a=$a^$b; //开源软件:phpfensi.com
- $b=$b^$a;
- $a=$a^$b;
- echo '交换后$a:'.$a.',$b:'.$b.'<br />';
- echo '-----------------------<br/>';
- //只适用于数字
- $a=3;
- $b=5;
- echo '交换前 $a:'.$a.',$b:'.$b.'<br />';
- $a=$a+$b;
- $b=$a-$b;
- $a=$a-$b;
- echo '交换后$a:'.$a.',$b:'.$b.'<br />';
Tags: PHP第三个变量 PHP变量交换
- 上一篇:PHPExcel导出时列过大问题解决办法
- 下一篇:php中去掉头尾空格3种方法
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)