欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP互換兩個(gè)變量值的方法(不用第三變量)

 更新時(shí)間:2016年11月14日 11:36:27   投稿:daisy  
相信每個(gè)剛接觸PHP語言的童鞋們應(yīng)該藕知道,PHP中兩個(gè)變量的值互換是個(gè)很常見的做法,那么下面這篇文章我們就來介紹幾個(gè)對于變量值互換的常見操作方法,文中介紹的很詳細(xì),相信對于大家的理解和學(xué)習(xí)很有幫助,下面有需要的朋友們來一起看看吧。

前言

今天在這里我們就來看看,在PHP中如何在不使用第三變量的情況下,達(dá)到交換兩個(gè)變量值得目的。詳細(xì)的解說見代碼注釋,下面來一起看看吧。

一、substr() && strlen()

代碼:

<?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é)果值

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

     交換之前 $a 的值:This is A, $b 的值:This is B

     交換之后 $a 的值:This is B, $b 的值:This is A

二、str_replace()

代碼:

<?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é)果值

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

     交換之前 $a 的值:This is A, $b 的值:This is B

     交換之后 $a 的值:This is B, $b 的值:This is A

三、list() && list()

代碼:

<?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é)果值

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

     交換之前 $a 的值:This is A, $b 的值:This is B

     交換之后 $a 的值:This is B, $b 的值:This is A

四、異或

代碼:

<?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
 * 
 * 下面主要使用按位異或交換,具體請參照下列給出的二進(jìn)制過程,
 */
$a=$a^$b; // 此刻$a:000000000000000000000000000000000000000000000000000000000000000000000011
$b=$b^$a; // 此刻$b:010101000110100001101001011100110010000001101001011100110010000001000001
$a=$a^$b; // 此刻$a:010101000110100001101001011100110010000001101001011100110010000001000010
echo '交換之后 $a 的值:'.$a.', $b 的值:'.$b,'<br>'; // 輸出結(jié)果值

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

     交換之前 $a 的值:This is A, $b 的值:This is B

     交換之后 $a 的值:This is B, $b 的值:This is A

五、加(+)減(-)運(yùn)算符

代碼:

<?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é)果值

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

     交換之前 $a 的值:1, $b 的值:2

     交換之后 $a 的值:2, $b 的值:1

總結(jié)

好了,以上差不多就是在php中不借助第三個(gè)變量交換兩個(gè)變量值的所有方法了,當(dāng)然,肯定還有更好地,我這里算是拋磚引玉了。說到底,都是小算法,大家有空自己也可以研究下。希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。謝謝大家對腳本之家的支持。

相關(guān)文章

  • windows服務(wù)器使用IIS時(shí)thinkphp搜索中文無效問題

    windows服務(wù)器使用IIS時(shí)thinkphp搜索中文無效問題

    在用ThinkPHP開發(fā)的網(wǎng)站,在linux服務(wù)器下使用過一段時(shí)間,一切正常。但是更換到windows服務(wù)器時(shí),發(fā)現(xiàn)搜索的時(shí)候,無法搜索中文,查不出相應(yīng)的結(jié)果。查看數(shù)據(jù)庫發(fā)現(xiàn)數(shù)據(jù)是存在的。linux服務(wù)器下正常,而且搜索數(shù)字或字母程序正常,說明程序是沒有任何問題的。
    2023-06-06
  • php解析json數(shù)據(jù)實(shí)例

    php解析json數(shù)據(jù)實(shí)例

    這篇文章主要介紹了php解析json數(shù)據(jù)實(shí)例,很重要的一個(gè)應(yīng)用,需要的朋友可以參考下
    2014-08-08
  • PHP實(shí)現(xiàn)mysqli批量執(zhí)行多條語句的方法示例

    PHP實(shí)現(xiàn)mysqli批量執(zhí)行多條語句的方法示例

    這篇文章主要介紹了PHP實(shí)現(xiàn)mysqli批量執(zhí)行多條語句的方法,結(jié)合實(shí)例形式分析了php連接mysqli并批量執(zhí)行多條語句的相關(guān)操作技巧,需要的朋友可以參考下
    2017-07-07
  • PHP 數(shù)據(jù)結(jié)構(gòu) 算法描述 冒泡排序 bubble sort

    PHP 數(shù)據(jù)結(jié)構(gòu) 算法描述 冒泡排序 bubble sort

    多次循環(huán)進(jìn)行比較,每次比較時(shí)將最大數(shù)移動到最上面。每次循環(huán)時(shí),找出剩余變量里的最大值,然后減小查詢范圍。這樣經(jīng)過多次循環(huán)以后,就完成了對這個(gè)數(shù)組的排序
    2011-07-07
  • PHP編程快速實(shí)現(xiàn)數(shù)組去重的方法詳解

    PHP編程快速實(shí)現(xiàn)數(shù)組去重的方法詳解

    這篇文章主要介紹了PHP編程快速實(shí)現(xiàn)數(shù)組去重的方法,結(jié)合實(shí)例形式分析了php數(shù)組去重復(fù)函數(shù)與使用技巧,需要的朋友可以參考下
    2017-07-07
  • php 中英文語言轉(zhuǎn)換類代碼

    php 中英文語言轉(zhuǎn)換類代碼

    突然想做個(gè)中英文的功能試一下,只是把一些常用且有規(guī)律的詞匯比如 ‘評論’ ,時(shí)間單位(幾秒幾小時(shí)前這些)可以自由的轉(zhuǎn)化。
    2011-08-08
  • thinkphp 多表 事務(wù)詳解

    thinkphp 多表 事務(wù)詳解

    本篇文章是對thinkphp 多表、事務(wù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • php編程實(shí)現(xiàn)追加內(nèi)容到txt文件中的方法

    php編程實(shí)現(xiàn)追加內(nèi)容到txt文件中的方法

    這篇文章主要介紹了php編程實(shí)現(xiàn)追加內(nèi)容到txt文件中的方法,涉及php覆蓋式添加內(nèi)容到txt文件、追加內(nèi)容以及逐行讀取txt文件的相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • PHP頁面中文亂碼分析

    PHP頁面中文亂碼分析

    php出現(xiàn)出現(xiàn)亂碼的原因:頁面文件的編碼方式(.html,.php等)、html.head中指定瀏覽器的編碼方式、MySql數(shù)據(jù)庫傳輸?shù)木幋a方式、Apache字符集。
    2013-10-10
  • 用mysql_fetch_array()獲取當(dāng)前行數(shù)據(jù)的方法詳解

    用mysql_fetch_array()獲取當(dāng)前行數(shù)據(jù)的方法詳解

    本篇文章是對使用mysql_fetch_array()獲取當(dāng)前行數(shù)據(jù)的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06

最新評論