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应用技巧
Mar 27 PHP
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
May 29 PHP
PHP类的静态(static)方法和静态(static)变量使用介绍
Feb 19 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
Jan 06 PHP
php中memcache 基本操作实例
May 17 PHP
php验证码生成代码
Nov 11 PHP
thinkPHP中验证码的简单使用方法
Dec 26 PHP
php打包网站并在线压缩为zip
Feb 13 PHP
详解PHP防止直接访问.php 文件的实现方法
Jul 28 PHP
PHP数据库编程之MySQL优化策略概述
Aug 16 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
Aug 06 PHP
Yii2.0建立公共方法简单示例
Jan 29 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的serialize序列化数据以及JSON格式化数据分析
2015/10/10 PHP
php调用自己java程序的方法详解
2016/05/13 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
laravel-admin 实现给grid的列添加行数序号的方法
2019/10/08 PHP
JS仿flash上传头像效果实现代码
2011/07/18 Javascript
js 幻灯片的实现
2011/12/06 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
Javascript改变CSS样式(局部和全局)
2013/12/18 Javascript
Javascript中的作用域和上下文深入理解
2015/07/03 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
微信小程序 前端源码逻辑和工作流详解
2016/10/08 Javascript
JS中Swiper的使用和轮播图效果
2017/08/11 Javascript
JS获取当前地理位置的方法
2017/10/25 Javascript
C#实现将一个字符转换为整数
2017/12/12 Javascript
Vue封装Swiper实现图片轮播效果
2018/02/06 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
2018/03/06 Javascript
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
五句话帮你轻松搞定js原型链
2020/12/09 Javascript
[15:20]DOTA2-DPC中国联赛 正赛 Elephant vs Aster 选手采访
2021/03/11 DOTA
python插入排序算法的实现代码
2013/11/21 Python
解决Python中由于logging模块误用导致的内存泄露
2015/04/23 Python
Python 迭代器与生成器实例详解
2017/05/18 Python
Python基于回溯法子集树模板解决0-1背包问题实例
2017/09/02 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
2018/06/13 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
Python新手学习raise用法
2020/06/03 Python
CSS3中currentColor关键字的妙用
2016/02/27 HTML / CSS
浅谈CSS3 动画卡顿解决方案
2019/01/02 HTML / CSS
Html5 web本地存储实例详解
2016/07/28 HTML / CSS
什么是数据库锁?Oracle中都有哪些类型的锁?
2015/08/21 面试题
服装设计专业求职信
2014/06/16 职场文书
政风行风整改报告
2014/11/06 职场文书
单位接收函格式
2015/01/30 职场文书
2015初一年级组工作总结
2015/07/24 职场文书
新手初学Java网络编程
2021/07/07 Java/Android