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与SQL注入攻击[三]
Apr 17 PHP
WindowsXP中快速配置Apache+PHP5+Mysql
Jun 05 PHP
ThinkPHP关于session的操作方法汇总
Jul 18 PHP
PHP生成不重复标识符的方法
Nov 21 PHP
php下Memcached入门实例解析
Jan 05 PHP
php实现过滤UBB代码的类
Mar 12 PHP
php导出生成word的方法
Dec 25 PHP
CodeIgniter自定义控制器MY_Controller用法分析
Jan 20 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
Sep 23 PHP
PHP实现字符串的全排列详解
Apr 24 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 23 PHP
如何解决php-fpm启动不了问题
Nov 17 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入门速成(2)
2006/10/09 PHP
php实现头像上传预览功能
2017/04/27 PHP
[Web]防止用户复制页面内容和另存页面的方法
2009/02/06 Javascript
javascript屏蔽右键代码
2014/05/15 Javascript
JavaScript动态改变div属性的实现方法
2015/07/22 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
JS Attribute属性操作详解
2016/05/19 Javascript
Javascript实现跑马灯效果的简单实例
2016/05/31 Javascript
vue动态路由实现多级嵌套面包屑的思路与方法
2017/08/16 Javascript
Vue组件开发之LeanCloud带图形校验码的短信发送功能
2017/11/07 Javascript
Vue实现双向绑定的原理以及响应式数据的方法
2018/07/02 Javascript
详解JS实现简单的时分秒倒计时代码
2019/04/25 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
2014/06/10 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
Python基于列表模拟堆栈和队列功能示例
2018/01/05 Python
Python/Django后端使用PIL Image生成头像缩略图
2019/04/30 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
2019/07/08 Python
解决Python正则表达式匹配反斜杠''\''问题
2019/07/17 Python
opencv之为图像添加边界的方法示例
2019/12/26 Python
Python3查找列表中重复元素的个数的3种方法详解
2020/02/13 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
python简单的三元一次方程求解实例
2020/04/02 Python
python怎么判断模块安装完成
2020/06/19 Python
css3 box-shadow阴影(外阴影与外发光)图示讲解
2017/08/11 HTML / CSS
Fossil美国官网:Fossil手表、手袋、珠宝及配件
2017/02/01 全球购物
数据库方面面试题
2012/04/22 面试题
档案管理员岗位职责
2013/12/01 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
社区先进事迹材料
2014/05/19 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
2015年资料员工作总结
2015/04/25 职场文书
道歉信怎么写
2015/05/12 职场文书
2015中秋节晚会主持词
2015/07/01 职场文书
el-table-column 内容不自动换行的解决方法
2022/08/14 Vue.js