2013-03-12 47 views
4

我在我的代碼,這樣一行:可選參數PHP列表功能

list($user_id, $name, $limit, $remaining, $reset) = explode('|', $user); 

最後3個參數可能會或可能不會存在。是否有一個類似於列表的函數,如果數組小於預期,它將自動忽略最後一個參數?

+1

'list'不是函數。 – 2013-03-12 15:33:24

+1

「不分配任何東西」或「分配空值」意義上的「忽略」? – 2013-03-12 15:35:17

+0

你不應該想要這個。當您在範圍內通過名稱定義變量時,應始終創建該變量。空變量應該發生什麼?他們是否應該創建?這會弄亂下面的代碼... – deceze 2013-03-12 15:35:50

回答

4

只是一些備用的管道添加到字符串的結尾:

list($user_id, $name, $limit, $remaining, $reset) = explode('|', $user.'||||'); 

問題就迎刃而解了。

注意:如果您要加載任意管道分隔的數據,則可能需要使用str_getcsv()函數而不是explode()

+0

http://stackoverflow.com/a/15365504/851643似乎是一個更好的解決方案 – Alexcode 2016-07-19 17:26:29

26
list(...) = array_pad(explode('|', $user), 5, null); 
6

如果您擔心SDC的解決方案感覺「哈克」那麼你可以設置一些默認值並使用:

$user = '3|username'; 

$defaults = array(NULL, NULL, 10, 5, FALSE); 
list($user_id, $name, $limit, $remaining, $reset) = explode('|', $user) + $defaults; 

var_dump($user_id, $name, $limit, $remaining, $reset);