PHP交換兩個變數的值,不使用第三個變數
阿新 • • 發佈:2018-12-31
當交換的為數字時:
<?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