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 相关文章推荐
php下删除字符串中HTML标签的函数
Aug 27 PHP
PHP中文件读、写、删的操作(PHP中对文件和目录操作)
Mar 06 PHP
PHP 透明水印生成代码
Aug 27 PHP
基于empty函数的输出详解
Jun 17 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
Jun 20 PHP
php使用curl抓取qq空间的访客信息示例
Feb 28 PHP
php多维数组去掉重复值示例分享
Mar 02 PHP
理解PHP中的stdClass类
Apr 18 PHP
php计算整个目录大小的方法
Jun 01 PHP
PHP 常用时间函数资料整理
Oct 22 PHP
Yii 2.0中场景的使用教程
Jun 02 PHP
PHP设计模式之简单工厂和工厂模式实例分析
Mar 25 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
CodeIgniter框架URL路由总结
2014/09/03 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
js url传值中文乱码之解决之道
2009/11/20 Javascript
12款经典的白富美型—jquery图片轮播插件—前端开发必备
2013/01/08 Javascript
javaScript中Math()函数注意事项
2015/06/18 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
2015/10/29 Javascript
jQuery的事件预绑定
2016/12/05 Javascript
TypeScript入门-基本数据类型
2017/03/28 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
vue进行图片的预加载watch用法实例讲解
2018/02/07 Javascript
讲解vue-router之什么是嵌套路由
2018/05/28 Javascript
vue的注意规范之v-if 与 v-for 一起使用教程
2019/08/04 Javascript
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
2019/09/25 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
2019/10/16 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
用Python代码来绘制彭罗斯点阵的教程
2015/04/03 Python
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
Python设计模式之迭代器模式原理与用法实例分析
2019/01/10 Python
Django实现后台上传并显示图片功能
2020/05/29 Python
Python unittest如何生成HTMLTestRunner模块
2020/09/08 Python
pycharm 实现复制一行的快捷键
2021/01/15 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
使用CSS3来绘制一个月食图案
2015/07/18 HTML / CSS
浅谈CSS3中display属性的Flex布局的方法
2017/08/14 HTML / CSS
W Concept美国:精选全球独立设计师
2017/02/22 全球购物
Lulu & Georgia官方网站:购买地毯、家具、抱枕、壁纸、床上用品等
2018/03/19 全球购物
为数据库创建索引都需要注意些什么
2012/07/17 面试题
会议邀请函范文
2014/01/09 职场文书
医学专业应届生的自我评价
2014/02/28 职场文书
2014年卫生监督工作总结
2014/12/09 职场文书
2015年少先队活动总结
2015/03/25 职场文书
2015学校年度工作总结
2015/05/11 职场文书
小学毕业感言200字
2015/07/30 职场文书
《棉鞋里的阳光》教学反思
2016/02/20 职场文书