1. 程式人生 > >PHP交換兩個變數的值,不使用第三個變數

PHP交換兩個變數的值,不使用第三個變數

當交換的為數字時

    <?php  
    /** 
     * 雙方變數為數字時,可用交換方法五 
     * 使用加減運算子,相當於數學運算了^_^ 
     */  
    $a = 1; // a變數原始值  
    $b = 2; // b變數原始值  
    echo '交換之前 $a 的值:'.$a.', $b 的值:'.$b,'<br>'; // 輸出原始值  
    $a=$a+$b; // $a $b和值  
    $b=$a-$b; // 不解釋..  
    $a=$a-$b; // 不解釋..  
    echo '交換之後 $a 的值:'.$a.', $b 的值:'.$b,'<br>'; // 輸出結果值  


執行結果:

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

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


當交換的為字串時:

一、異或

<?php  
/** 
 * 雙方變數為字串或者數字時,可用交換方法四 
 * 使用異或運算 
 */  
$a = "This is A"; // a變數原始值  
$b = "This is B"; // b變數原始值  
echo '交換之前 $a 的值:'.$a.', $b 的值:'.$b,'<br>'; // 輸出原始值  
/** 
 * 原始二進位制: 
 * $a:010101000110100001101001011100110010000001101001011100110010000001000001 
 * $b:010101000110100001101001011100110010000001101001011100110010000001000010 
 *  
 * 下面主要使用按位異或交換,具體請參照下列給出的二進位制過程, 
 */  
$a=$a^$b; // 此刻$a:000000000000000000000000000000000000000000000000000000000000000000000011  
$b=$b^$a; // 此刻$b:010101000110100001101001011100110010000001101001011100110010000001000001  
$a=$a^$b; // 此刻$a:010101000110100001101001011100110010000001101001011100110010000001000010  
echo '交換之後 $a 的值:'.$a.', $b 的值:'.$b,'<br>'; // 輸出結果值 



執行結果:

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

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

二、str_replace
    <?php  
    /** 
     * 雙方變數為字串時,可用交換方法二 
     * 使用str_replace()方法達到交換變數值得目的 
     * 此方法較第一種,邏輯上稍微簡單點 
     */  
    $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); // 此時,$b為原始$a值,則在$a(原始$a+$b)中將$b(原始$a)替換為空,則餘下的返回值則為原始$b,交換成功  
    echo '交換之後 $a 的值:'.$a.', $b 的值:'.$b,'<br>'; // 輸出結果值  



執行結果:

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

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