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 14 PHP
完美解决PHP中的Cannot modify header information 问题
Aug 12 PHP
php调整gif动画图片尺寸示例代码分享
Dec 05 PHP
以文件形式缓存php变量的方法
Jun 26 PHP
浅谈PHP中的
Apr 23 PHP
如何使用PHP给图片加水印
Oct 12 PHP
php array_pop 删除数组最后一个元素实例
Nov 02 PHP
PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
Feb 10 PHP
基于php流程控制语句和循环控制语句(讲解)
Oct 23 PHP
php PDO属性设置与操作方法分析
Dec 27 PHP
Yii框架ACF(accessController)简单权限控制操作示例
Apr 26 PHP
laravel实现上传图片的两种方式小结
Oct 12 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操作MongoDB的技术总结
2013/06/02 PHP
php session实现多级目录存放实现代码
2016/02/03 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
jquery 学习之二 属性相关
2010/11/23 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
js实现飞入星星特效代码
2014/10/17 Javascript
javascript实现控制的多级下拉菜单
2015/07/05 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
基于jQuery实现以手风琴方式展开和折叠导航菜单
2016/01/28 Javascript
jQuery选择器及jquery案例详解(必看)
2016/05/20 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
2017/11/08 jQuery
jQuery滚动条美化插件nicescroll简单用法示例
2018/04/18 jQuery
JavaScript实现汉字转换为拼音及缩写的方法示例
2019/03/28 Javascript
Vue实战教程之仿肯德基宅急送App
2019/07/19 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
Layer.js实现表格溢出内容省略号显示,悬停显示全部的方法
2019/09/16 Javascript
vue 封装面包屑组件教程
2020/11/16 Javascript
[01:14:55]EG vs Spirit Supermajor 败者组 BO3 第三场 6.4
2018/06/05 DOTA
[39:00]Optic vs VP 2018国际邀请赛淘汰赛BO3 第三场 8.24
2018/08/25 DOTA
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
2014/01/19 Python
python实现简易数码时钟
2021/02/19 Python
Python 加密与解密小结
2018/12/06 Python
python采集百度搜索结果带有特定URL的链接代码实例
2019/08/30 Python
使用tqdm显示Python代码执行进度功能
2019/12/08 Python
python lambda函数及三个常用的高阶函数
2020/02/05 Python
python批量修改交换机密码的示例
2020/09/22 Python
生产部主管岗位职责
2014/01/06 职场文书
商场消防演习方案
2014/02/12 职场文书
车间质检员岗位职责
2015/04/08 职场文书
应届生个人的求职(自荐信范文2篇)
2019/08/23 职场文书
PL350与SW11的比较
2021/04/22 无线电
关于pytest结合csv模块实现csv格式的数据驱动问题
2022/05/30 Python