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 相关文章推荐
phpmyadmin 访问被拒绝的真实原因
Jun 15 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
Jun 19 PHP
php使用NumberFormatter格式化货币的方法
Mar 21 PHP
PHP中的事务使用实例
May 26 PHP
PHP内核学习教程之php opcode内核实现
Jan 27 PHP
Linux下编译redis和phpredis的方法
Apr 07 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
May 27 PHP
使用Yii2实现主从数据库设置
Nov 20 PHP
谈谈php对接芝麻信用踩的坑
Dec 01 PHP
php插件Xajax使用方法详解
Aug 31 PHP
Laravel框架中自定义模板指令总结
Dec 17 PHP
tp5框架使用cookie加密算法实现登录功能示例
Feb 10 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
关于文本留言本的分页代码
2006/10/09 PHP
使用php来实现网络服务
2009/09/15 PHP
浅析php变量修饰符static的使用
2013/06/28 PHP
php操作MongoDB类实例
2015/06/17 PHP
调试WordPress中定时任务的相关PHP脚本示例
2015/12/10 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
PhpSpreadsheet设置单元格常用操作汇总
2020/11/13 PHP
详解new function(){}和function(){}() 区别分析
2008/03/22 Javascript
json跟xml的对比分析
2008/06/10 Javascript
JavaScript 参数中的数组展开 [译]
2012/09/21 Javascript
Javascript基础教程之JavaScript语法
2015/01/18 Javascript
jQuery()方法的第二个参数详解
2015/04/29 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
Spring mvc 接收json对象
2015/12/10 Javascript
详解javascript实现瀑布流列式布局
2016/01/29 Javascript
js实现div模拟模态对话框展现URL内容
2016/05/27 Javascript
Bootstrap Search Suggest使用例子
2016/12/21 Javascript
Vue中使用vee-validate表单验证的方法
2018/05/09 Javascript
微信小程序实现顶部导航特效
2019/01/28 Javascript
实例分析编写vue组件方法
2019/02/12 Javascript
解决vue scoped html样式无效的问题
2020/10/24 Javascript
详解微信小程序「渲染层网络层错误」的解决方法
2021/01/06 Javascript
使用python获取CPU和内存信息的思路与实现(linux系统)
2014/01/03 Python
在PyCharm中批量查找及替换的方法
2019/01/20 Python
python 缺失值处理的方法(Imputation)
2019/07/02 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
python爬虫beautifulsoup解析html方法
2020/12/07 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
师德师风演讲稿
2014/05/05 职场文书
大四毕业生自荐书
2014/07/05 职场文书
高中同学会活动方案
2014/08/14 职场文书
2014年财政工作总结
2014/12/10 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
服装区域经理岗位职责
2015/04/10 职场文书
2016年大学生社会实践心得体会
2015/10/09 职场文书
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python