《PHP學(xué)習(xí):PHP互換兩個(gè)變量值的方法(不用第三變量)》要點(diǎn):
本文介紹了PHP學(xué)習(xí):PHP互換兩個(gè)變量值的方法(不用第三變量),希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
PHP教程前言
PHP教程今天在這里我們就來看看,在PHP中如何在不使用第三變量的情況下,達(dá)到交換兩個(gè)變量值得目的.詳細(xì)的解說見代碼注釋,下面來一起看看吧.
PHP教程一、substr() && strlen()
PHP教程代碼:
PHP教程
<?php
/**
* 雙方變量為字符串時(shí),可用交換方法一
* 使用substr()結(jié)合strlen()兩個(gè)方法達(dá)到交換變量值得目的
*/
$a = "This is A"; // a變量原始值
$b = "This is B"; // b變量原始值
echo '交換之前 $a 的值:'.$a.', $b 的值:'.$b,'<br>'; // 輸出原始值
$a .= $b; // 將$b的值追加到$a中
/**
* $b得到$a值詳解:
* 先通過strlen()分別計(jì)算出$a和$b中字符串的長度【此時(shí)$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,'<br>'; // 輸出結(jié)果值
PHP教程運(yùn)行結(jié)果:
PHP教程???? 交換之前 $a 的值:This is A, $b 的值:This is B
PHP教程???? 交換之后 $a 的值:This is B, $b 的值:This is A
PHP教程二、str_replace()
PHP教程代碼:
PHP教程
<?php
/**
* 雙方變量為字符串時(shí),可用交換方法二
* 使用str_replace()方法達(dá)到交換變量值得目的
* 此方法較第一種,邏輯上稍微簡單點(diǎn)
*/
$a = "This is A"; // a變量原始值
$b = "This is B"; // b變量原始值
echo '交換之前 $a 的值:'.$a.', $b 的值:'.$b,'<br>'; // 輸出原始值
$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,'<br>'; // 輸出結(jié)果值
PHP教程運(yùn)行結(jié)果:
PHP教程???? 交換之前 $a 的值:This is A, $b 的值:This is B
PHP教程???? 交換之后 $a 的值:This is B, $b 的值:This is A
PHP教程三、list() && list()
PHP教程代碼:
PHP教程
<?php
/**
* 雙方變量為字符串時(shí),可用交換方法三
* 使用list()和array()方法達(dá)到交換變量值得目的
* 此方法較第一、二種,代碼最簡潔
*/
$a = "This is A"; // a變量原始值
$b = "This is B"; // b變量原始值
echo '交換之前 $a 的值:'.$a.', $b 的值:'.$b,'<br>'; // 輸出原始值
list($b,$a) = array($a,$b); // list() 函數(shù)用數(shù)組中的元素為一組變量賦值.了解這個(gè),相信其他的不用我多說了吧
echo '交換之后 $a 的值:'.$a.', $b 的值:'.$b,'<br>'; // 輸出結(jié)果值
PHP教程運(yùn)行結(jié)果:
PHP教程???? 交換之前 $a 的值:This is A, $b 的值:This is B
PHP教程???? 交換之后 $a 的值:This is B, $b 的值:This is A
PHP教程四、異或
PHP教程代碼:
PHP教程
<?php
/**
* 雙方變量為字符串或者數(shù)字時(shí),可用交換方法四
* 使用異或運(yùn)算
*/
$a = "This is A"; // a變量原始值
$b = "This is B"; // b變量原始值
echo '交換之前 $a 的值:'.$a.', $b 的值:'.$b,'<br>'; // 輸出原始值
/**
* 原始二進(jìn)制:
* $a:010101000110100001101001011100110010000001101001011100110010000001000001
* $b:010101000110100001101001011100110010000001101001011100110010000001000010
*
* 下面主要使用按位異或交換,具體請(qǐng)參照下列給出的二進(jìn)制過程,
*/
$a=$a^$b; // 此刻$a:000000000000000000000000000000000000000000000000000000000000000000000011
$b=$b^$a; // 此刻$b:010101000110100001101001011100110010000001101001011100110010000001000001
$a=$a^$b; // 此刻$a:010101000110100001101001011100110010000001101001011100110010000001000010
echo '交換之后 $a 的值:'.$a.', $b 的值:'.$b,'<br>'; // 輸出結(jié)果值
PHP教程運(yùn)行結(jié)果:
PHP教程???? 交換之前 $a 的值:This is A, $b 的值:This is B
PHP教程???? 交換之后 $a 的值:This is B, $b 的值:This is A
PHP教程五、加(+)減(-)運(yùn)算符
PHP教程代碼:
PHP教程
<?php
/**
* 雙方變量為數(shù)字時(shí),可用交換方法五
* 使用加減運(yùn)算符,相當(dāng)于數(shù)學(xué)運(yùn)算了^_^
*/
$a = "This is A"; // a變量原始值
$b = "This is B"; // b變量原始值
echo '交換之前 $a 的值:'.$a.', $b 的值:'.$b,'<br>'; // 輸出原始值
$a=$a+$b; // $a $b和值
$b=$a-$b; // 不解釋..
$a=$a-$b; // 不解釋..
echo '交換之后 $a 的值:'.$a.', $b 的值:'.$b,'<br>'; // 輸出結(jié)果值
PHP教程運(yùn)行結(jié)果:
PHP教程???? 交換之前 $a 的值:1, $b 的值:2
PHP教程???? 交換之后 $a 的值:2, $b 的值:1
PHP教程總結(jié)
PHP教程好了,以上差不多就是在php中不借助第三個(gè)變量交換兩個(gè)變量值的所有方法了,當(dāng)然,肯定還有更好地,我這里算是拋磚引玉了.說到底,都是小算法,大家有空自己也可以研究下.希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流.謝謝大家對(duì)維易PHP的支持.
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/2791.html