2011-07-25 161 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