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传输数据的代码
Nov 13 PHP
php &amp;&amp; 逻辑与运算符使用说明
Mar 04 PHP
PHP开发中四种查询返回结果分析
Jan 02 PHP
PHP笔记之:日期函数的使用介绍
Apr 24 PHP
php实现下载限制速度示例分享
Feb 13 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
Aug 21 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
Apr 08 PHP
PHP使用curl模拟post上传及接收文件的方法
Mar 04 PHP
PHP对称加密算法(DES/AES)类的实现代码
Nov 14 PHP
PHP使用函数用法详解
Sep 30 PHP
php根据命令行参数生成配置文件详解
Mar 15 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
Mar 26 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
法兰绒滤网冲泡
2021/03/03 冲泡冲煮
php_screw 1.5:php加密: 安装与使用详解
2013/06/20 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
CI操作cookie的方法分析(基于helper类库)
2016/03/28 PHP
php中关于长度计算容易混淆的问题分析
2016/05/27 PHP
Jquery数独游戏解析(一)-页面布局
2010/11/05 Javascript
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
仅IE支持clearAttributes/mergeAttributes方法使用介绍
2012/05/04 Javascript
jQuery页面刷新(局部、全部)问题分析
2016/01/09 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
2016/04/17 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
2016/04/18 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
2016/05/25 Javascript
AngularJS 过滤与排序详解及实例代码
2016/09/14 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
angular2组件中定时刷新并清除定时器的实例讲解
2018/08/31 Javascript
使用FormData实现上传多个文件
2018/12/04 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
2019/02/19 jQuery
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
如何在vue-cli中使用css-loader实现css module
2021/01/07 Vue.js
javascript代码实现简易计算器
2021/01/25 Javascript
python+pyqt实现12306图片验证效果
2017/10/25 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
Python增强赋值和共享引用注意事项小结
2019/05/28 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
python编写俄罗斯方块
2020/03/13 Python
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
美国在线购买内衣网站:HerRoom
2020/02/22 全球购物
linux下进程间通信的方式
2013/01/23 面试题
2014年信息中心工作总结
2014/12/17 职场文书
小浪底导游词
2015/02/12 职场文书
升职自荐信范文
2015/03/27 职场文书
Python基础之字符串格式化详解
2021/04/21 Python
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server
python实现简单的三子棋游戏
2022/04/28 Python
JavaScript原型链中函数和对象的理解
2022/06/16 Javascript