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基础学习小结
Apr 17 PHP
解析dedeCMS验证码的实现代码
Jun 07 PHP
如何用php获取文件名后缀
Jun 09 PHP
利用PHP+JS实现搜索自动提示(实例)
Jun 09 PHP
Youku 视频绝对地址获取的方法详解
Jun 26 PHP
ThinkPHP标签制作教程
Jul 10 PHP
简单谈谈php延迟静态绑定
Jan 26 PHP
Symfony2框架学习笔记之表单用法详解
Mar 18 PHP
详解PHP处理字符串类似indexof的方法函数
Jun 11 PHP
Laravel程序架构设计思路之使用动作类
Jun 07 PHP
Laravel框架在本地虚拟机快速安装的方法详解
Jun 11 PHP
浅谈laravel 5.6 安装 windows上使用composer的安装过程
Oct 18 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
用ODBC的分页显示
2006/10/09 PHP
php和js如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
使用PHP实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
PHP PDOStatement::errorInfo讲解
2019/01/31 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
2020/02/03 PHP
jquery获得下拉框值的代码
2011/08/13 Javascript
jquery选择器的选择使用及性能介绍
2013/01/16 Javascript
JQuery实现点击div以外的位置隐藏该div窗口
2013/09/13 Javascript
jQuery表格列宽可拖拽改变且兼容firfox
2014/09/03 Javascript
JavaScript中匿名、命名函数的性能测试
2014/09/04 Javascript
javascript中cookie对象用法实例分析
2015/01/30 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
详解前后端分离之VueJS前端
2017/05/24 Javascript
以BootStrap Tab为例写一个前端组件
2017/07/25 Javascript
浅谈JavaScript find 方法不支持IE的问题
2017/09/28 Javascript
详解Vue This$Store总结
2018/12/17 Javascript
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
原生JS实现留言板
2020/03/26 Javascript
基于JS实现table导出Excel并保留样式
2020/05/19 Javascript
详解Vue2的diff算法
2021/01/06 Vue.js
详解Django中的过滤器
2015/07/16 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
详解Django中六个常用的自定义装饰器
2018/07/04 Python
Python使用googletrans报错的解决方法
2018/09/25 Python
基于Python获取城市近7天天气预报
2019/11/26 Python
DjangoWeb使用Datatable进行后端分页的实现
2020/05/18 Python
使用CSS3的box-sizing属性解决div宽高被内边距撑开的问题
2016/06/28 HTML / CSS
伦敦平价潮流珠宝首饰品牌:Astrid & Miyu
2016/10/10 全球购物
大学老师推荐信
2014/02/25 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
2016年大学自主招生自荐信范文
2015/03/24 职场文书
教师旷工检讨书
2015/08/15 职场文书
mysql如何能有效防止删库跑路
2021/10/05 MySQL
SQL SERVER存储过程用法详解
2022/02/24 SQL Server
MySQL 数据库范式化设计理论
2022/04/22 MySQL