PHP不借助第三个变量交换值
总结一下:
//方法一:
$a = "abc";
$b= "def"; $a = $a^$b;
$b = $b^$a;
$a = $a^$b; //方法二:
list($a, $b) = array($b, $a); //方法三:
$a = $a . $b;
$b = strlen( $b );
$b = substr( $a, 0, (strlen($a) - $b ) );
$a = substr( $a, strlen($b) ); //方法四:(这个就比较有限制,必须用一个两个字符串都都不能出现的字符做为分隔符)
$a = $b.','.$a ;
$a = explode(',', $a);
$b = $a[1];
$a = $a[0]; //方法五:(这个是当两个数都是数字的时候)
$a = $a + $b;
$b = $a - $b;
$a = $a - $b;
这几种方法在网上都可查到,因此,这里归类为转载.
大概解释一下:方法一采用的是异或的方法,能够想得出来这个方法的,计算机的功底打得很扎实.但这个方法有个前提条件是$a,$b 的长度须一样.方法四需要分割符不能包含在$a,$b 中,第五个适用于交换两个数字.第三个方法可能存在编码的问题.因此最优雅,简洁的方法应是方法二.
PHP不借助第三个变量交换值的更多相关文章
- Java基础知识强化05:不借助第三个变量实现两个变量互换
1. 不借助第三个变量实现两个变量互换 代码如下: package himi.hebao; /** * 不借助第三个变量实现,两个变量互换 * 这里利用^异或实现两个变量的互换 * @author A ...
- C# 不借助第三个变量实现两整数交换
c#中实现两个int变量的数值互换,在借助第三个变量做临时载体的情况下,非常简单. ; ; int c ; c = a; a = b; b = c; 如果不借助第三方变量,有几种实现的方法: 1.异或 ...
- 交换两个变量的值,不借助第三个变量的 三种方法(JS实现)
第一种:算术运算法 var a = 10; var b = 12; a = b - a; b = b - a; a = b + a; 它的原理是:把a.b看做数轴上的点,围绕两点间的距离来进行计算.具 ...
- JAVA中两个int类型的变量在不借助第三个变量的情况下完成值的互换
在面试中被问到这个问题,想到两种解决方式,在此分享一下. 第一种,使用简单的数学运算达到目标(但是面试官往往会问你还有没有其他方式): public static void main(String[] ...
- python 交换变量的值 不需要借助第三个变量
>>> a,b,c,d=1,2,3,4>>> a,b,c,d=d,c,b,a>>> print(a,b,c,d)4 3 2 1>>&g ...
- Java实现两个变量的互换(不借助第3个变量)
创建一个类,在该类中定义两个变量并为其指定初始值,然后交换两个变量的值,要求不允许借助第三个变量,只能使用异或运行实现两个变量值的交换. import java.util.Scanner; publi ...
- 现在有两个变量,分别是a = 3, b = 4,那么我们不用第三个变量来调换a和b的值。
现在有两个变量,分别是a = 3, b = 4,那么我们不用第三个变量来调换a和b的值. <!DOCTYPE html><html><head> <me ...
- a,b为2个整型变量,在不引入第三个变量的前提下写一个算法实现 a与b的值互换
package com.Summer_0424.cn; /** * @author Summer * a,b为2个整型变量,在不引入第三个变量的前提下写一个算法实现 a与b的值互换? */ publi ...
- 输入三个double型的数据,放入到a,b,c三个变量中去,使用条件结构与交换逻辑将这三个变量中的值从小到大排列。
import java.util.Scanner; public class C8{ public static void main(String []args){ /* 8.输入三个double型的 ...
随机推荐
- spring命名空间
作为一名入门级菜鸟的我,在刚开始学spring框架的时候,对于命名空间不是很理解,只是在跟着老师敲代码.随着后来学习的深入,慢慢了解到命名空间的意义.如果你没有引入相应的命名空间,就不能引用相应的标签 ...
- 列表推导式和sum的用法
作者:杨航锋链接:https://www.zhihu.com/question/57470958/answer/153405326来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
- javascript基础知识笔记-自用
笔记内容根据个人基础知识不足不明白之处做的记录.主要看的:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript 1.变量,变量的名字又叫标识符 ...
- vue cli 3
介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统 通过 @vue/cli 搭建交互式的项目脚手架. 通过 @vue/cli + @vue/cli-service-global 快 ...
- HTML5 前端将 dom 元素转化为 Word,EXCEL 或者图片 并实现下载
< 一 > word 1,依赖于 jquery.html.word.js 插件 => https://blog-static.cnblogs.com/files/lovling/ ...
- Swoft 容器使用
可以借助Swoft下的Bean类操作容器 示例: 将类绑定至容器 use Swoft\Bean\Annotation\Bean; /** * @Bean("imageLogic") ...
- Java线程池应用及原理分析(JDK1.8)
目录 一.线程池优点 二.线程池创建 三.任务处理流程 四.任务缓存队列及排队策略 五.任务拒绝策略 六.线程池关闭 七.线程池实现原理 八.静态方法创建线程池 九.如何确定线程池大小 一.线程池优点 ...
- laravel5.6中Session store not set on request问题如何解决
先找到文件app下的Kernel.php文件,在文件中加入下列代码 protected $middleware = [ \Illuminate\Foundation\Http\Middleware\C ...
- Unable to locate appropriate constructor on class报错
在项目开发中,使用Hibernate里的JPA criteria查询,但是在写完之后使用时,会报错:Unable to locate appropriate constructor on class, ...
- windown 下最简单的安装mysql方式
最近自己的mysql要升级,需要重新安装mysql,官网有提供傻瓜式的安装方式.. 记得下载.msi的格式.这个安装最简单.