PHP不用第三变量交换2个变量的值的解决方法


Posted in PHP onJune 02, 2013

以前做过一道php面试题是这样的:不使用第三个变量实现交换两个变量的值。一般都是借助第三个中间变量来实现原来两个变量的值交换,但是这道题却要求不能使用中间变量,这对于初学者来说也算是一个难题了。网上找到的几种方法总结如下:

//字符串版本 结合使用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;
$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 />';

PHP 相关文章推荐
一个图形显示IP的PHP程序代码
Oct 19 PHP
PHP setTime 设置当前时间的代码
Aug 27 PHP
编写php应用程序实现摘要式身份验证的方法详解
Jun 08 PHP
easyui的tabs update正确用法分享
Mar 21 PHP
php伪静态之APACHE篇
Jun 02 PHP
php实现的DateDiff和DateAdd时间函数代码分享
Aug 16 PHP
php使用iconv中文截断问题的解决方法
Feb 11 PHP
php编写简单的文章发布程序
Jun 18 PHP
php判断访问IP的方法
Jun 19 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
May 18 PHP
PHP编写daemon process详解及实例代码
Sep 30 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
Mar 14 PHP
基于php socket(fsockopen)的应用实例分析
Jun 02 #PHP
深入PHP操作MongoDB的技术总结
Jun 02 #PHP
深入php数据采集的详解
Jun 02 #PHP
基于php下载文件的详解
Jun 02 #PHP
用PHP实现浏览器点击下载TXT文档的方法详解
Jun 02 #PHP
优化PHP代码技巧的小结
Jun 02 #PHP
PHP无限分类(树形类)的深入分析
Jun 02 #PHP
You might like
php 字符过滤类,用于过滤各类用户输入的数据
2009/05/27 PHP
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
2013/01/06 PHP
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
2013/06/06 PHP
PHP采用get获取url汉字出现乱码的解决方法
2014/11/13 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
2010/06/02 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
利用JavaScript阻止表单提交的两种方法
2016/08/11 Javascript
微信小程序 实战小程序实例
2016/10/08 Javascript
JavaScript易错知识点整理
2016/12/05 Javascript
详解node.js搭建代理服务器请求数据
2017/04/08 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
vue中v-for加载本地静态图片方法
2018/03/03 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
解决element ui select下拉框不回显数据问题的解决
2019/02/20 Javascript
微信小程序全局变量改变监听的实现方法
2019/07/15 Javascript
JavaScript设计模式--桥梁模式引入操作实例分析
2020/05/23 Javascript
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
python中的lambda表达式用法详解
2016/06/22 Python
对Python获取屏幕截图的4种方法详解
2019/08/27 Python
python+pygame实现坦克大战
2019/09/10 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
英国最受信任的在线眼镜商之一:Fashion Eyewear
2019/10/31 全球购物
毕业生如何写自我鉴定
2014/03/15 职场文书
国庆节演讲稿
2014/05/27 职场文书
开展批评与自我批评发言材料
2014/10/17 职场文书
税务会计岗位职责
2015/04/02 职场文书
入党介绍人意见2015
2015/06/01 职场文书
歌咏比赛主持词
2015/06/29 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书
Pytorch可视化的几种实现方法
2021/06/10 Python
使用python+pygame开发消消乐游戏附完整源码
2021/06/10 Python
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL