摘要:前言上次在冒泡排序算法詳解一文中曾經(jīng)提到過交換兩個變量值的基礎(chǔ)方法,因為主要是談?wù)撁芭菖判虻模詻]有深究。那么今天在這里我們就來看看,在中,如何在不使用第三變量的情況下,達(dá)到交換兩個變量值得目的。
前言
上次在《PHP冒泡排序(Bubble Sort)算法詳解》一文中曾經(jīng)提到過PHP交換兩個變量值的基礎(chǔ)方法,因為主要是談?wù)撁芭菖判虻模詻]有深究。那么今天在這里我們就來看看,在PHP中,如何在不使用第三變量的情況下,達(dá)到交換兩個變量值得目的。
正文(解說見代碼注釋) 一、substr() && strlen()代碼:
"; // 輸出原始值 $a .= $b; // 將$b的值追加到$a中 /** * $b得到$a值詳解: * 先通過strlen()分別計算出$a和$b中字符串的長度【此時$a是原始$a和$b的合值】 * 通過strlen($a)-strlen($b)即可得出原始$a的值長度 * 在通過substr()方法在合并后的$a中從0開始截取到$a的長度,那么即可得到原始$a的值 * $a得到$b值詳解: * 由于此刻$b已經(jīng)是$a的原始值了,而$a合并后的值為原始$a+原始$b的值,故用substr()在$a中從$b(原始$a)長度位置截取,則去的內(nèi)容則為原始$b,則將$b值付給$a成功 */ $b = substr($a,0,(strlen($a)-strlen($b))); $a = substr($a, strlen($b)); echo "交換之后 $a 的值:".$a.", $b 的值:".$b,"
"; // 輸出結(jié)果值
運行結(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); // 此時,$b為原始$a值,則在$a(原始$a+$b)中將$b(原始$a)替換為空,則余下的返回值則為原始$b,交換成功 echo "交換之后 $a 的值:".$a.", $b 的值:".$b,"
"; // 輸出結(jié)果值
運行結(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ù)組中的元素為一組變量賦值。了解這個,相信其他的不用我多說了吧 echo "交換之后 $a 的值:".$a.", $b 的值:".$b,"
"; // 輸出結(jié)果值
運行結(jié)果:
交換之前 $a 的值:This is A, $b 的值:This is B 交換之后 $a 的值:This is B, $b 的值:This is A四、異或
代碼:
"; // 輸出原始值 /** * 原始二進(jìn)制: * $a:010101000110100001101001011100110010000001101001011100110010000001000001 * $b:010101000110100001101001011100110010000001101001011100110010000001000010 * * 下面主要使用按位異或交換,具體請參照下列給出的二進(jìn)制過程, */ $a=$a^$b; // 此刻$a:000000000000000000000000000000000000000000000000000000000000000000000011 $b=$b^$a; // 此刻$b:010101000110100001101001011100110010000001101001011100110010000001000001 $a=$a^$b; // 此刻$a:010101000110100001101001011100110010000001101001011100110010000001000010 echo "交換之后 $a 的值:".$a.", $b 的值:".$b,"
"; // 輸出結(jié)果值
運行結(jié)果:
交換之前 $a 的值:This is A, $b 的值:This is B 交換之后 $a 的值:This is B, $b 的值:This is A五、加(+)減(-)運算符
代碼:
"; // 輸出原始值 $a=$a+$b; // $a $b和值 $b=$a-$b; // 不解釋.. $a=$a-$b; // 不解釋.. echo "交換之后 $a 的值:".$a.", $b 的值:".$b,"
"; // 輸出結(jié)果值
運行結(jié)果:
交換之前 $a 的值:1, $b 的值:2 交換之后 $a 的值:2, $b 的值:1總結(jié)
ok,以上差不多就是在php中不借助第三個變量交換兩個變量值的所有方法了,當(dāng)然,肯定還有更好地,我這里算是拋磚引玉了。
說到底,都是小算法,大家有空自己也可以研究下。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/22022.html
摘要:由一層函數(shù)調(diào)用進(jìn)入下一層函數(shù)調(diào)用的遞推。此時,中的一個稱為孤兒的類就會收留這個對象。禁止訪問服務(wù)器拒絕請求服務(wù)器找不到請求的頁面服務(wù)器內(nèi)部錯誤壞的網(wǎng)關(guān)一般是網(wǎng)關(guān)服務(wù)器請求后端服務(wù)時,后端服務(wù)沒有按照協(xié)議正確返回結(jié)果。 持續(xù)更新。。。。 php 1. 簡述 php 中的 autoload Autoload 的加載機(jī)制,當(dāng)通過 new 來實例化一個類時,PHP 會通過定義的 autol...
閱讀 917·2021-10-27 14:14
閱讀 1741·2021-10-11 10:59
閱讀 1315·2019-08-30 13:13
閱讀 3152·2019-08-29 15:17
閱讀 2750·2019-08-29 13:48
閱讀 488·2019-08-26 13:36
閱讀 2082·2019-08-26 13:25
閱讀 857·2019-08-26 12:24