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 相关文章推荐
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
Mar 29 PHP
C# Assembly类访问程序集信息
Jun 13 PHP
php表单提交实例讲解
Nov 12 PHP
理解PHP中的Session及对Session有效期的控制
Jan 08 PHP
php mysql 封装类实例代码
Sep 18 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
Feb 15 PHP
PHP编程中的Session阻塞问题与解决方法分析
Aug 07 PHP
PHP实现的敏感词过滤方法示例
Mar 06 PHP
PHP中的self关键字详解
Jun 23 PHP
用PHP做了一个领取优惠券活动的示例代码
Jul 05 PHP
php探针使用原理和技巧讲解
Sep 17 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
Oct 21 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 操作文件的一些FAQ总结
2009/02/12 PHP
php 中文和编码判断代码
2010/05/16 PHP
php数组函数序列之array_keys() - 获取数组键名
2011/10/30 PHP
使用php实现下载生成某链接快捷方式的解决方法
2013/05/07 PHP
jquery.lazyload  实现图片延迟加载jquery插件
2010/02/06 Javascript
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
jquery淡化版banner异步图片文字效果切换图片特效
2014/04/08 Javascript
JavaScript排序算法动画演示效果的实现方法
2016/10/18 Javascript
微信小程序实现轮播图效果
2017/09/07 Javascript
微信小程序实现换肤功能
2018/03/14 Javascript
JS面向对象的程序设计相关知识小结
2018/05/26 Javascript
.vue文件 加scoped 样式不起作用的解决方法
2018/05/28 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
VUE简单的定时器实时刷新的实现方法
2019/01/20 Javascript
Python urlopen 使用小示例
2008/09/06 Python
python获取从命令行输入数字的方法
2015/04/29 Python
Python的re模块正则表达式操作
2016/05/25 Python
Python连接DB2数据库
2016/08/27 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
详解python3 + Scrapy爬虫学习之创建项目
2019/04/12 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
基于打开pycharm有带图片md文件卡死问题的解决
2020/04/24 Python
详解Python设计模式之策略模式
2020/06/15 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
2020/12/11 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
2021/02/18 Python
购买限量版收藏品、珠宝和礼品:Bradford Exchange
2016/09/23 全球购物
最新的咖啡店创业计划书
2013/12/30 职场文书
校园安全检查制度
2014/02/03 职场文书
小学运动会入场式解说词
2014/02/18 职场文书
企业文化宣传标语
2014/06/09 职场文书
2014年终个人总结报告
2015/03/09 职场文书
电影雨中的树观后感
2015/06/15 职场文书
微信小程序基础教程之echart的使用
2021/06/01 Javascript
如何用六步教会你使用python爬虫爬取数据
2022/04/06 Python
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python