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 相关文章推荐
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
Mar 21 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
Jun 08 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
Jun 12 PHP
PHP实现HTML生成PDF文件的方法
Nov 07 PHP
php格式化日期实例分析
Nov 12 PHP
php编写的抽奖程序中奖概率算法
May 14 PHP
Yii中创建自己的Widget实例
Jan 05 PHP
PHP 读取大文件并显示的简单实例(推荐)
Aug 12 PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 PHP
PHP+Ajax实现的博客文章添加类别功能示例
Mar 29 PHP
PHP简单实现正则匹配省市区的方法
Apr 13 PHP
PHP+ajax实现获取新闻数据简单示例
May 08 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
怎么样可以把 phpinfo()屏蔽掉?
2006/11/24 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
浅谈PHP中其他类型转化为Bool类型
2016/03/28 PHP
一个简单安全的PHP验证码类、PHP验证码
2016/09/24 PHP
你不知道的文件上传漏洞php代码分析
2016/09/29 PHP
替换php字符串中的单引号为双引号的方法
2017/02/16 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
2017/04/10 PHP
javascritp实现input输入框相关限制用法
2007/06/29 Javascript
table行随鼠标移动变色示例
2014/05/07 Javascript
JS实现倒计时和文字滚动的效果实例
2014/10/29 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
Angular指令之restict匹配模式的详解
2017/07/27 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
2018/08/02 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
100行代码实现vue表单校验功能(小白自编)
2019/11/19 Javascript
JavaScript实现原型封装轮播图
2020/12/27 Javascript
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
Python实现KNN邻近算法
2021/01/28 Python
python matplotlib 注释文本箭头简单代码示例
2018/01/08 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
10款最佳Python开发工具推荐,每一款都是神器
2020/10/15 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
获取邓白氏信用报告:Dun & Bradstreet
2019/01/22 全球购物
Farfetch澳大利亚官网:Farfetch Australia
2020/04/26 全球购物
促销活动策划方案
2014/01/12 职场文书
幼儿园门卫岗位职责
2014/02/14 职场文书
犯错检讨书
2014/02/21 职场文书
模具专业毕业推荐信
2014/03/08 职场文书
擅自离岗检讨书
2014/09/12 职场文书
七一建党节慰问信
2015/02/14 职场文书
Python实现打乒乓小游戏
2021/09/25 Python
纯CSS实现一个简单步骤条的示例代码
2022/07/15 HTML / CSS