2011-07-25 159 views
5

我想爆炸字符串,但所產生的陣列有特定的字符串作爲鍵,而不是整數:PHP - 使用爆炸()函數賦值給關聯數組

即。如果我有一個字符串「李四」,ID」一樣爆發,所以我有一個關聯數組,如:目前

$arr['first_name'] = "Joe"; 
$arr['last_name'] = "Bloggs"; 

,我可以這樣做:

$str = "Joe Bloggs"; 
$arr['first_name'] = explode(" ", $str)[0]; 
$arr['last_name'] = explode(" ", $str)[1]; 

這是低效,因爲我必須打電話爆炸兩次。

或者我可以這樣做:

$str = "Joe Bloggs"; 
$arr = explode(" ", $str); 
$arr['first_name'] = $arr[0]; 
$arr['last_name'] = $arr[1]; 

,但我不知道是否有任何更直接的方法。

非常感謝。

回答

18

我會用array_combine像這樣:

$fields = array ('first_name', 'last_name'); 
$arr = array_combine ($fields, explode (" ", $str)); 

編輯:我也想挑這種過度使用列表(),因爲它允許您添加如果不需要使list()調用的時間過長,您應該要求這些字段。

8

您可以使用listPHP ManualDemo):

$str = "Joe Bloggs"; 
list($arr['first_name'], $arr['last_name']) = explode(" ", $str); 

$arr則是:

Array 
(
    [last_name] => Bloggs 
    [first_name] => Joe 
) 
+0

歡呼你的答案和演示。 – Joe

6

在PHP < = 5.3你不能做explode(" ", $str)[0]

但是,你可以這樣做:

list($arr['first_name'], $arr['last_name']) = explode(" ", $str); 
+0

感謝您的回答,並警告重新「爆炸(」「,$ str)[0]」 – Joe