学习了这么久的php,对于我本身确定是要为之后的工做作铺垫的,而找工做的面试是不可避免的,面试中咱们常常会被问到一些技术相关的问题。而如何在PHP里交换两个变量的值,是不少公司面试都会涉及到的问题,因此我在这里总结整理一下,为的是我之后能有迹可循,若是能帮到更多的人,我也很开心~php
PHP里变量的数据类型其实有不少种,但通常须要作到交换的就是整型和字符串,因此面试通常也会针对此,我就只针对这两种来总结了。面试
咱们最简单能想到的方法就是寻找中间变量进行过渡。算法
<?php
$a = 2;
$b = 5;
$c = $a; //$c = 2
$a = $b; //$a = 5
$b = $c; //$b = 2
echo $a."\n".$b;
复制代码
这种方法有个好处就是交换时对资源相对占用较少。也正是由于相对最简单,因此通常面试也会要求咱们不容许借助中间变量,这个时候咱们就要寻求别的办法了。数组
任何两个非零的整数,均可以在四则运算里构建关系。那咱们就能够运用这个关系,在不借用其余变量的同时交换它们的值。bash
<?php
$a = 2;
$b = 5;
//加法
$a += $b; //$a = 7
$b = $a - $b; //$b = 2
$a = $a - $b; //$a = 5
echo $a."\n".$b;
//减法
$b -= $a; //$b = 3
$a = $b + $a; //$a = 5
$b = $a - $b; //$b = 2
echo $a."\n".$b;
//乘法
$a *= $b; //$a = 10
$b = $a / $b; //$b = 2
$a = $a / $b; //$a = 5
echo $a."\n".$b;
//除法
$a /= $b; //$a = 0.4
$b = $a * $b; //$b = 2
$a = $b / $a; //$a = 5
echo $a."\n".$b;
复制代码
须要注意的是,若是有些公司要求写出方法的个数的话,加减乘除只算一种奥。固然若是实在想不出来,写上凑数也能够,万一面试官心软经过呢~(狗头)函数
因为拼接以后取数的方式不一样,因此分为两种。主要思路就是把变量进行拼接以后,根据其本来数据类型的长度不一样,来分别提取其中的部分,便可完成交换。学习
<?php
$a = 2;
$b = 5;
$a .= $b; //$a = 25
$b = substr($a,0,strlen($a) - strlen($b)); //$b = 2
$a = substr($a,strlen($b)); //$a = 5
echo $a."\n".$b;
复制代码
由于是拼接不牵扯运算,因此咱们能够对字符串的变量也进行交换。ui
<?php
$a = 'hello';
$b = 'world';
$a .= $b; //$a = 'helloworld'
$b = substr($a,0,strlen($a) - strlen($b)); //$b = 'hello'
$a = substr($a,strlen($b)); //$a = 'world'
echo $a."\n".$b;
复制代码
这中间使用到的两个函数时,须要注意下这两个函数的做用。spa
substr($string,$start,$end = full)
其中第一个参数为你须要截取的字符串;第二个参数为你须要从哪一位开始截取的下标值;第三个参数为你须要截取的最后一位的下标值,若是不填写值,则默认一直截取至最后一位。code
strlen($string)
是指所传字符串的长度。
但这种方法直观可见的就是写起来相对多一点,因此咱们能够换一种方法进行交换。
同上一种方法同样,咱们须要将变量先拼接。而后咱们能够利用函数将拼接后的进行替换。
<?php
$a = 'hello';
$b = 'world';
$a .= $b; //$a = 'helloworld'
$b = str_replace($b,'',$a); //$b = 'hello'
$a = str_replace($b,'',$a); //$a = 'world'
echo $a."\n".$b;
复制代码
这种方法中咱们用到了str_replace($search,$replace,$subject,count = null)
,其中第一个参数为你须要替换的部分,第二个参数为你须要替换成的内容,第三个参数为你须要替换的部分出现的地方,第四个参数不是必填参数,会返回你一共在这个须要替换的地方出现了几回替换的次数,若是不填写则默认不返回。
和拼接法的思路基本相同,咱们能够利用数组的特性,来利用‘键名对应键值’,经过下标交换变量的值。
<?php
$a = 'hello';
$b = 'world';
$a = [$a,$b]; //$a = ['hello','world']
$b = $a[0]; //$b = 'hello'
$a = $a[1]; //$a = 'world'
echo $a."\n".$b;
复制代码
咱们总说PHP是世界最好的语言,因此这么好的语言,也必定有它专门解决这类问题的方法库,list()
<?php
$a = 'hello';
$b = 'world';
list($b,$a) = [$a,$b];
echo $a."\n".$b;
复制代码
这种方法应该目前最直接也是最简单的书写的方法了,其实list()
函数也是利用了数组的思想,进行了转换,只不过PHP的专业人员已经提早替咱们封装成了函数。
这类问题应该是面试中常常会见到的问题了,其实它不只考察了咱们对于PHP基础知识的掌握,也考验了咱们思考能力和临场反应能力。以上就是我总结的PHP里交换变量的方法了,若是有任何编写问题,但愿你们批评指正。也欢迎你们对此进行补充~固然能帮到你们是最好了~