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编程最快明白(第一讲 软件环境和准备工作)
Oct 25 PHP
PHP文件读写操作之文件写入代码
Jan 13 PHP
IIS7.X配置PHP运行环境小结
Jun 09 PHP
解析php中die(),exit(),return的区别
Jun 20 PHP
解析PHP正则提取或替换img标记属性
Jun 26 PHP
php检测apache mod_rewrite模块是否安装的方法
Mar 14 PHP
CI分页类首页、尾页不显示的解决方法
Mar 28 PHP
PHP去除字符串最后一个字符的三种方法实例
Mar 01 PHP
解决php-fpm.service not found问题的办法
Jun 06 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
Aug 11 PHP
Smarty缓存机制实例详解【三种缓存方式】
Jul 20 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
Apr 13 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+mysqli批量查询多张表数据的方法
2015/01/29 PHP
php获得网站访问统计信息类Compete API用法实例
2015/04/02 PHP
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
jquery win 7透明弹出层效果的简单代码
2013/08/06 Javascript
异步动态加载JS并运行(示例代码)
2013/12/13 Javascript
JavaScript按位运算符的应用简析
2014/02/04 Javascript
取得元素的左和上偏移量的方法
2014/09/17 Javascript
JS实现在页面随时自定义背景颜色的方法
2015/02/27 Javascript
详解AngularJS中的表格使用
2015/06/16 Javascript
Bootstrap学习笔记之js组件(4)
2016/06/12 Javascript
微信小程序开发的四十个技术窍门总结(推荐)
2017/01/23 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
详解微信小程序Page中data数据操作和函数调用
2017/09/27 Javascript
layui 给数据表格加序号的方法
2018/08/20 Javascript
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
浅入深出Vue之自动化路由
2019/08/06 Javascript
何时/使用 Vue3 render 函数的教程详解
2020/07/25 Javascript
详解React路由传参方法汇总记录
2020/11/29 Javascript
python 网络爬虫初级实现代码
2016/02/27 Python
python队列queue模块详解
2018/04/27 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
详解Python 调用C# dll库最简方法
2019/06/20 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
爬虫代理的cookie如何生成运行
2020/09/22 Python
Python基于locals返回作用域字典
2020/10/17 Python
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
HTML5跳转小程序wx-open-launch-weapp的示例代码
2020/07/16 HTML / CSS
什么造成了Java里面的异常
2016/04/24 面试题
可靠的数据流传输TCP
2016/03/15 面试题
创业计划书模版
2014/02/05 职场文书
安全教育实施方案
2014/03/02 职场文书
环保建议书300字
2014/05/14 职场文书
超市食品安全承诺书
2015/04/29 职场文书
高中生军训感言
2015/08/01 职场文书
python中requests库+xpath+lxml简单使用
2021/04/29 Python
Java spring单点登录系统
2021/09/04 Java/Android