成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

PHP技巧之不用第三變量互換兩個(gè)變量值的解決方法

XboxYan / 1269人閱讀

摘要:前言上次在冒泡排序算法詳解一文中曾經(jīng)提到過(guò)交換兩個(gè)變量值的基礎(chǔ)方法,因?yàn)橹饕钦務(wù)撁芭菖判虻?,所以沒(méi)有深究。那么今天在這里我們就來(lái)看看,在中,如何在不使用第三變量的情況下,達(dá)到交換兩個(gè)變量值得目的。

前言

上次在《PHP冒泡排序(Bubble Sort)算法詳解》一文中曾經(jīng)提到過(guò)PHP交換兩個(gè)變量值的基礎(chǔ)方法,因?yàn)橹饕钦務(wù)撁芭菖判虻模詻](méi)有深究。那么今天在這里我們就來(lái)看看,在PHP中,如何在不使用第三變量的情況下,達(dá)到交換兩個(gè)變量值得目的。

正文(解說(shuō)見(jiàn)代碼注釋?zhuān)?/b> 一、substr() && strlen()

代碼:

"; // 輸出原始值
$a .= $b; // 將$b的值追加到$a中
/**
 * $b得到$a值詳解:
 *      先通過(guò)strlen()分別計(jì)算出$a和$b中字符串的長(zhǎng)度【此時(shí)$a是原始$a和$b的合值】
 *      通過(guò)strlen($a)-strlen($b)即可得出原始$a的值長(zhǎng)度
 *      在通過(guò)substr()方法在合并后的$a中從0開(kāi)始截取到$a的長(zhǎng)度,那么即可得到原始$a的值
 * $a得到$b值詳解:
 *      由于此刻$b已經(jīng)是$a的原始值了,而$a合并后的值為原始$a+原始$b的值,故用substr()在$a中從$b(原始$a)長(zhǎng)度位置截取,則去的內(nèi)容則為原始$b,則將$b值付給$a成功
 */
$b  = substr($a,0,(strlen($a)-strlen($b)));
$a  = substr($a, strlen($b));
echo "交換之后 $a 的值:".$a.", $b 的值:".$b,"
"; // 輸出結(jié)果值

運(yùn)行結(jié)果:

交換之前 $a 的值:This is A, $b 的值:This is B
交換之后 $a 的值:This is B, $b 的值:This is A
二、str_replace()

代碼:

"; // 輸出原始值
$a .= $b; // 將$b的值追加到$a中
$b  = str_replace($b, "", $a); // 在$a(原始$a+$b)中,將$b替換為空,則余下的返回值為$a
$a  = str_replace($b, "", $a); // 此時(shí),$b為原始$a值,則在$a(原始$a+$b)中將$b(原始$a)替換為空,則余下的返回值則為原始$b,交換成功
echo "交換之后 $a 的值:".$a.", $b 的值:".$b,"
"; // 輸出結(jié)果值

運(yùn)行結(jié)果:

交換之前 $a 的值:This is A, $b 的值:This is B
交換之后 $a 的值:This is B, $b 的值:This is A
三、list() && list()

代碼:

"; // 輸出原始值
list($b,$a) = array($a,$b); // list() 函數(shù)用數(shù)組中的元素為一組變量賦值。了解這個(gè),相信其他的不用我多說(shuō)了吧
echo "交換之后 $a 的值:".$a.", $b 的值:".$b,"
"; // 輸出結(jié)果值

運(yùn)行結(jié)果:

交換之前 $a 的值:This is A, $b 的值:This is B
交換之后 $a 的值:This is B, $b 的值:This is A
四、異或

代碼:

"; // 輸出原始值
/**
 * 原始二進(jìn)制:
 * $a:010101000110100001101001011100110010000001101001011100110010000001000001
 * $b:010101000110100001101001011100110010000001101001011100110010000001000010
 * 
 * 下面主要使用按位異或交換,具體請(qǐng)參照下列給出的二進(jìn)制過(guò)程,
 */
$a=$a^$b; // 此刻$a:000000000000000000000000000000000000000000000000000000000000000000000011
$b=$b^$a; // 此刻$b:010101000110100001101001011100110010000001101001011100110010000001000001
$a=$a^$b; // 此刻$a:010101000110100001101001011100110010000001101001011100110010000001000010
echo "交換之后 $a 的值:".$a.", $b 的值:".$b,"
"; // 輸出結(jié)果值

運(yùn)行結(jié)果:

交換之前 $a 的值:This is A, $b 的值:This is B
交換之后 $a 的值:This is B, $b 的值:This is A
五、加(+)減(-)運(yùn)算符

代碼:

"; // 輸出原始值
$a=$a+$b; // $a $b和值
$b=$a-$b; // 不解釋..
$a=$a-$b; // 不解釋..
echo "交換之后 $a 的值:".$a.", $b 的值:".$b,"
"; // 輸出結(jié)果值

運(yùn)行結(jié)果:

交換之前 $a 的值:1, $b 的值:2
交換之后 $a 的值:2, $b 的值:1
總結(jié)

ok,以上差不多就是在php中不借助第三個(gè)變量交換兩個(gè)變量值的所有方法了,當(dāng)然,肯定還有更好地,我這里算是拋磚引玉了。

說(shuō)到底,都是小算法,大家有空自己也可以研究下。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22022.html

相關(guān)文章

  • php面試總結(jié)

    摘要:由一層函數(shù)調(diào)用進(jìn)入下一層函數(shù)調(diào)用的遞推。此時(shí),中的一個(gè)稱(chēng)為孤兒的類(lèi)就會(huì)收留這個(gè)對(duì)象。禁止訪問(wèn)服務(wù)器拒絕請(qǐng)求服務(wù)器找不到請(qǐng)求的頁(yè)面服務(wù)器內(nèi)部錯(cuò)誤壞的網(wǎng)關(guān)一般是網(wǎng)關(guān)服務(wù)器請(qǐng)求后端服務(wù)時(shí),后端服務(wù)沒(méi)有按照協(xié)議正確返回結(jié)果。 持續(xù)更新。。。。 php 1. 簡(jiǎn)述 php 中的 autoload Autoload 的加載機(jī)制,當(dāng)通過(guò) new 來(lái)實(shí)例化一個(gè)類(lèi)時(shí),PHP 會(huì)通過(guò)定義的 autol...

    greatwhole 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<