PHP不用第三變量交換2個(gè)變量的值的解決方法
更新時(shí)間:2013年06月02日 20:42:50 作者:
本篇文章是對(duì)在php中交換兩個(gè)變量的值的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
以前做過(guò)一道php面試題是這樣的:不使用第三個(gè)變量實(shí)現(xiàn)交換兩個(gè)變量的值。一般都是借助第三個(gè)中間變量來(lái)實(shí)現(xiàn)原來(lái)兩個(gè)變量的值交換,但是這道題卻要求不能使用中間變量,這對(duì)于初學(xué)者來(lái)說(shuō)也算是一個(gè)難題了。網(wǎng)上找到的幾種方法總結(jié)如下:
//字符串版本 結(jié)合使用substr,strlen兩個(gè)方法實(shí)現(xiàn)
$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方法實(shí)現(xiàn)
$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/>';
//字符串版本 結(jié)合使用list方法和array實(shí)現(xiàn)
$a="a";
$b="b";
echo '交換前 $a:'.$a.',$b:'.$b.'<br />';
list($b,$a)=array($a,$b);
echo '交換后$a:'.$a.',$b:'.$b.'<br />';
echo '-----------------------<br/>';
//字符串和數(shù)字都適用 使用異或運(yùn)算
$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/>';
//只適用于數(shù)字
$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 />';
復(fù)制代碼 代碼如下:
//字符串版本 結(jié)合使用substr,strlen兩個(gè)方法實(shí)現(xiàn)
$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方法實(shí)現(xiàn)
$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/>';
//字符串版本 結(jié)合使用list方法和array實(shí)現(xiàn)
$a="a";
$b="b";
echo '交換前 $a:'.$a.',$b:'.$b.'<br />';
list($b,$a)=array($a,$b);
echo '交換后$a:'.$a.',$b:'.$b.'<br />';
echo '-----------------------<br/>';
//字符串和數(shù)字都適用 使用異或運(yùn)算
$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/>';
//只適用于數(shù)字
$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 />';
相關(guān)文章
thinkPHP5框架數(shù)據(jù)庫(kù)連貫操作之cache()用法分析
這篇文章主要介紹了thinkPHP5框架數(shù)據(jù)庫(kù)連貫操作之cache()用法,結(jié)合實(shí)例形式分析了thinkPHP5中緩存cache的應(yīng)用場(chǎng)景及連貫操作中cache的設(shè)置、更新、刪除等操作技巧,需要的朋友可以參考下2018-01-01YII2框架自定義全局函數(shù)的實(shí)現(xiàn)方法小結(jié)
這篇文章主要介紹了YII2框架自定義全局函數(shù)的實(shí)現(xiàn)方法,總結(jié)分析了YII2框架自定義全局函數(shù)相關(guān)實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下2020-03-03完美解決thinkphp驗(yàn)證碼出錯(cuò)無(wú)法顯示的方法
這篇文章主要介紹了完美解決thinkphp驗(yàn)證碼出錯(cuò)無(wú)法顯示的方法,對(duì)比官網(wǎng)給出的方法結(jié)合自身的實(shí)踐,給出了一個(gè)相對(duì)可行的解決方法,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12thinkphp隱藏index.php/home并允許訪問(wèn)其他模塊的實(shí)現(xiàn)方法
這篇文章主要介紹了thinkphp隱藏index.php/home并允許訪問(wèn)其他模塊的實(shí)現(xiàn)方法,想要達(dá)成的效果很簡(jiǎn)單,我有兩個(gè)模塊,Home、Wechat。具體詳情請(qǐng)參考下本文。感興趣的朋友一起看看吧2016-10-10如何用PHP來(lái)實(shí)現(xiàn)一個(gè)動(dòng)態(tài)Web服務(wù)器
這篇文章介紹了如何用PHP來(lái)實(shí)現(xiàn)一個(gè)動(dòng)態(tài)Web服務(wù)器,文章思路清晰,并附有演示代碼地址,需要的朋友可以參考下2015-07-07PHP中Session可能會(huì)引起并發(fā)問(wèn)題
Session 中文沒(méi)有一個(gè)統(tǒng)一的譯法,我習(xí)慣上譯為會(huì)話。關(guān)于session的意義大家都應(yīng)該清楚: 其實(shí)是在瀏覽某個(gè)網(wǎng)站時(shí),在瀏覽器沒(méi)有關(guān)閉的情形之下,一個(gè)web應(yīng)用的開(kāi)始和結(jié)束。一個(gè)session可以包括數(shù)次http的請(qǐng)求和應(yīng)答2015-06-06