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 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
Jun 03 PHP
PHP Curl多线程原理实例详解
Nov 06 PHP
PHP加密解密类实例分析
Apr 20 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
May 25 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
Apr 20 PHP
PHP实现适用于自定义的验证码类
Jun 15 PHP
php mysql 封装类实例代码
Sep 18 PHP
PHP 接入微信扫码支付总结(总结篇)
Nov 03 PHP
php中static 静态变量和普通变量的区别
Dec 01 PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
Apr 10 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
May 05 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
Apr 14 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
加速XP搜索功能堪比vista
2007/03/22 PHP
php制作中间带自己定义图片二维码的方法
2014/01/27 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
2014/10/26 PHP
PHP strcmp()和strcasecmp()的区别实例
2016/11/05 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
jquery 与NVelocity 产生冲突的解决方法
2011/06/13 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
javascript实时显示当天日期的方法
2015/05/20 Javascript
理解Javascript图片预加载
2016/02/23 Javascript
利用jQuery中的ajax分页实现代码
2016/02/25 Javascript
AngularJs自定义服务之实现签名和加密
2016/08/02 Javascript
JavaScript数组复制详解
2017/02/02 Javascript
深入理解Javascript中的观察者模式
2017/02/20 Javascript
JavaScript中如何判断一个值的类型
2017/09/15 Javascript
在vue-cli 3中给stylus、sass样式传入共享的全局变量
2019/08/12 Javascript
Vue.js下拉菜单组件使用方法详解
2019/10/19 Javascript
vue弹出框组件封装实例代码
2019/10/31 Javascript
举例讲解Python的lambda语句声明匿名函数的用法
2016/07/01 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
一个基于flask的web应用诞生 组织结构调整(7)
2017/04/11 Python
python实现音乐下载器
2018/04/15 Python
详解Django之admin组件的使用和源码剖析
2018/05/04 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
python实现将汉字保存成文本的方法
2018/11/16 Python
pandas的排序和排名的具体使用
2019/07/31 Python
Python解压 rar、zip、tar文件的方法
2019/11/19 Python
浅谈优化Django ORM中的性能问题
2020/07/09 Python
德国街头和运动文化高品质商店:BSTN Store
2017/08/26 全球购物
某科技软件测试面试题
2013/05/19 面试题
绿色环保家庭事迹材料
2014/08/31 职场文书
银行自荐信怎么写
2015/03/05 职场文书
初中毕业生感言
2015/07/31 职场文书
大学三好学生主要事迹范文
2015/11/03 职场文书
2016公司新年问候语
2015/11/11 职场文书
2019自荐信范文集锦!
2019/07/03 职场文书
基于Python实现股票收益率分析
2022/04/02 Python