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 相关文章推荐
ip签名探针
Oct 09 PHP
PHP系统流量分析的程序
Oct 09 PHP
PHP获取用户的浏览器与操作系统信息的代码
Sep 04 PHP
php面向对象中的魔术方法中文说明
Mar 04 PHP
PHP动态规划解决0-1背包问题实例分析
Mar 23 PHP
thinkPHP商城公告功能开发问题分析
Dec 01 PHP
Thinkphp开发--集成极光推送
Sep 15 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 PHP
PHP反射实际应用示例
Apr 03 PHP
PHP判断一个变量是否为整数、正整数的方法示例
Sep 11 PHP
PHP autoload使用方法及步骤详解
Sep 05 PHP
PHP获取类私有属性的3种方法
Sep 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
php Calender(日历)代码分享
2014/01/03 PHP
php中的观察者模式简单实例
2015/01/20 PHP
php基于PDO实现功能强大的MYSQL封装类实例
2017/02/27 PHP
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
2011/02/24 Javascript
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
javascrip关于继承的小例子
2013/05/10 Javascript
Javascript遍历table中的元素示例代码
2014/07/08 Javascript
简介JavaScript中的setHours()方法的使用
2015/06/11 Javascript
express文件上传中间件Multer详解
2016/10/24 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
2016/11/01 Javascript
Bootstrap 3.x打印预览背景色与文字显示异常的解决
2016/11/06 Javascript
jQuery实现下拉菜单的实例代码
2017/06/19 jQuery
解决Angular4项目部署到服务器上刷新404的问题
2018/08/31 Javascript
在AngularJs中设置请求头信息(headers)的方法及不同方法的比较
2018/09/04 Javascript
JS数组扁平化、去重、排序操作实例详解
2020/02/24 Javascript
JS字符串和数组如何实现相互转化
2020/07/02 Javascript
Python3.0与2.X版本的区别实例分析
2014/08/25 Python
Python解决鸡兔同笼问题的方法
2014/12/20 Python
Python脚本实现下载合并SAE日志
2015/02/10 Python
浅谈python jieba分词模块的基本用法
2017/11/09 Python
numpy中矩阵合并的实例
2018/06/15 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
2019/07/11 Python
使用python批量修改文件名的方法(视频合并时)
2020/03/24 Python
python3将变量写入SQL语句的实现方式
2020/03/02 Python
django 前端页面如何实现显示前N条数据
2020/03/16 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
Python中openpyxl实现vlookup函数的实例
2020/10/28 Python
俄罗斯香水和化妆品网上商店:NOTINO.ru
2019/12/17 全球购物
教学实验楼管理制度
2014/02/01 职场文书
烹饪自我鉴定
2014/03/01 职场文书
法学专业毕业实习自我鉴定2014
2014/09/27 职场文书
2019新员工心得体会
2019/06/25 职场文书
Python爬虫之爬取最新更新的小说网站
2021/05/06 Python
浅谈MySQL之select优化方案
2021/08/07 MySQL
redis数据结构之压缩列表
2022/03/21 Redis