學習了這麼久的php,對於我本身確定是要爲之後的工做作鋪墊的,而找工做的面試是不可避免的,面試中咱們常常會被問到一些技術相關的問題。而如何在PHP裏交換兩個變量的值,是不少公司面試都會涉及到的問題,因此我在這裏總結整理一下,爲的是我之後能有跡可循,若是能幫到更多的人,我也很開心~php
PHP裏變量的數據類型其實有不少種,但通常須要作到交換的就是整型和字符串,因此面試通常也會針對此,我就只針對這兩種來總結了。面試
咱們最簡單能想到的方法就是尋找中間變量進行過渡。算法
<?php
$a = 2;
$b = 5;
$c = $a; //$c = 2
$a = $b; //$a = 5
$b = $c; //$b = 2
echo $a."\n".$b;
複製代碼
這種方法有個好處就是交換時對資源相對佔用較少。也正是由於相對最簡單,因此通常面試也會要求咱們不容許藉助中間變量,這個時候咱們就要尋求別的辦法了。數組
任何兩個非零的整數,均可以在四則運算裏構建關係。那咱們就能夠運用這個關係,在不借用其餘變量的同時交換它們的值。bash
<?php
$a = 2;
$b = 5;
//加法
$a += $b; //$a = 7
$b = $a - $b; //$b = 2
$a = $a - $b; //$a = 5
echo $a."\n".$b;
//減法
$b -= $a; //$b = 3
$a = $b + $a; //$a = 5
$b = $a - $b; //$b = 2
echo $a."\n".$b;
//乘法
$a *= $b; //$a = 10
$b = $a / $b; //$b = 2
$a = $a / $b; //$a = 5
echo $a."\n".$b;
//除法
$a /= $b; //$a = 0.4
$b = $a * $b; //$b = 2
$a = $b / $a; //$a = 5
echo $a."\n".$b;
複製代碼
須要注意的是,若是有些公司要求寫出方法的個數的話,加減乘除只算一種奧。固然若是實在想不出來,寫上湊數也能夠,萬一面試官心軟經過呢~(狗頭)函數
因爲拼接以後取數的方式不一樣,因此分爲兩種。主要思路就是把變量進行拼接以後,根據其本來數據類型的長度不一樣,來分別提取其中的部分,便可完成交換。學習
<?php
$a = 2;
$b = 5;
$a .= $b; //$a = 25
$b = substr($a,0,strlen($a) - strlen($b)); //$b = 2
$a = substr($a,strlen($b)); //$a = 5
echo $a."\n".$b;
複製代碼
由於是拼接不牽扯運算,因此咱們能夠對字符串的變量也進行交換。ui
<?php
$a = 'hello';
$b = 'world';
$a .= $b; //$a = 'helloworld'
$b = substr($a,0,strlen($a) - strlen($b)); //$b = 'hello'
$a = substr($a,strlen($b)); //$a = 'world'
echo $a."\n".$b;
複製代碼
這中間使用到的兩個函數時,須要注意下這兩個函數的做用。spa
substr($string,$start,$end = full)
其中第一個參數爲你須要截取的字符串;第二個參數爲你須要從哪一位開始截取的下標值;第三個參數爲你須要截取的最後一位的下標值,若是不填寫值,則默認一直截取至最後一位。code
strlen($string)
是指所傳字符串的長度。
但這種方法直觀可見的就是寫起來相對多一點,因此咱們能夠換一種方法進行交換。
同上一種方法同樣,咱們須要將變量先拼接。而後咱們能夠利用函數將拼接後的進行替換。
<?php
$a = 'hello';
$b = 'world';
$a .= $b; //$a = 'helloworld'
$b = str_replace($b,'',$a); //$b = 'hello'
$a = str_replace($b,'',$a); //$a = 'world'
echo $a."\n".$b;
複製代碼
這種方法中咱們用到了str_replace($search,$replace,$subject,count = null)
,其中第一個參數爲你須要替換的部分,第二個參數爲你須要替換成的內容,第三個參數爲你須要替換的部分出現的地方,第四個參數不是必填參數,會返回你一共在這個須要替換的地方出現了幾回替換的次數,若是不填寫則默認不返回。
和拼接法的思路基本相同,咱們能夠利用數組的特性,來利用‘鍵名對應鍵值’,經過下標交換變量的值。
<?php
$a = 'hello';
$b = 'world';
$a = [$a,$b]; //$a = ['hello','world']
$b = $a[0]; //$b = 'hello'
$a = $a[1]; //$a = 'world'
echo $a."\n".$b;
複製代碼
咱們總說PHP是世界最好的語言,因此這麼好的語言,也必定有它專門解決這類問題的方法庫,list()
<?php
$a = 'hello';
$b = 'world';
list($b,$a) = [$a,$b];
echo $a."\n".$b;
複製代碼
這種方法應該目前最直接也是最簡單的書寫的方法了,其實list()
函數也是利用了數組的思想,進行了轉換,只不過PHP的專業人員已經提早替咱們封裝成了函數。
這類問題應該是面試中常常會見到的問題了,其實它不只考察了咱們對於PHP基礎知識的掌握,也考驗了咱們思考能力和臨場反應能力。以上就是我總結的PHP裏交換變量的方法了,若是有任何編寫問題,但願你們批評指正。也歡迎你們對此進行補充~固然能幫到你們是最好了~