PHP中,使用list函數(shù)可以一次性給多個(gè)變量賦值,通常和explode函數(shù)一起使用,可以將一個(gè)字符串按照指定的分隔符分割后存入變量中,如下面的例子:
$str = "apple,banana,orange"; list($fruit1, $fruit2, $fruit3) = explode(",", $str); echo $fruit1; //輸出:apple echo $fruit2; //輸出:banana echo $fruit3; //輸出:orange
上面的代碼中,$str是一個(gè)包含三個(gè)水果名的字符串,使用explode函數(shù)將其按照逗號(hào)分隔后,通過(guò)list函數(shù)將三個(gè)水果名存入三個(gè)變量中,然后分別輸出三個(gè)變量的值。
需要注意的是,存儲(chǔ)變量的數(shù)量和分割后的單元數(shù)必須一致,如果變量數(shù)量少于單元數(shù),那么多余的單元將被忽略;如果變量數(shù)量多于單元數(shù),那么多余的變量將被賦值為null。
下面的例子展示了存儲(chǔ)變量數(shù)量少于單元數(shù)的情況:
$str = "apple,banana,orange"; list($fruit1, $fruit2) = explode(",", $str); echo $fruit1; //輸出:apple echo $fruit2; //輸出:banana
上面的代碼中,只聲明了兩個(gè)變量,使用list函數(shù)賦值時(shí)只取前兩個(gè)單元的值,因此第三個(gè)單元的值被忽略。
下面的例子展示了存儲(chǔ)變量數(shù)量多于單元數(shù)的情況:
$str = "apple,banana,orange"; list($fruit1, $fruit2, $fruit3, $fruit4) = explode(",", $str); echo $fruit1; //輸出:apple echo $fruit2; //輸出:banana echo $fruit3; //輸出:orange echo $fruit4; //輸出:null
上面的代碼中,聲明了四個(gè)變量,使用list函數(shù)賦值時(shí)只有三個(gè)單元的值,因此第四個(gè)變量被賦值為null。
在使用list函數(shù)時(shí),有時(shí)候并不知道分割后的單元數(shù),需要?jiǎng)討B(tài)設(shè)置存儲(chǔ)變量的數(shù)量,可以使用數(shù)組來(lái)存儲(chǔ)變量名,如下面的例子:
$str = "apple,banana,orange"; $fruit = explode(",", $str); $fruit_num = count($fruit); $fruit_arr = array(); for ($i = 1; $i<= $fruit_num; $i++) { $fruit_arr[] = "fruit" . $i; } list($fruit_arr[0], $fruit_arr[1], $fruit_arr[2]) = $fruit; echo $fruit1; //輸出:apple echo $fruit2; //輸出:banana echo $fruit3; //輸出:orange
上面的代碼中,先使用數(shù)組$fruit_arr動(dòng)態(tài)設(shè)置存儲(chǔ)變量的數(shù)量,然后使用list函數(shù)將$fruit數(shù)組的值按照$fruit_arr數(shù)組的下標(biāo)一一存入變量中,最終輸出三個(gè)水果名。
總之,使用list函數(shù)可以方便地將分割后的單元值存入多個(gè)變量中,但要注意存儲(chǔ)變量數(shù)量和分割后的單元數(shù)必須一致,否則會(huì)導(dǎo)致一些單元被忽略或多余的變量被賦值為null。