使用explode()函数将值分配给关联数组的PHP方法

5
我希望能将一个字符串分割成数组,但结果数组的键为特定字符串而非整数:
例如,如果我有一个字符串 "Joe Bloggs",我想将其分割成关联数组,如下所示:
$arr['first_name'] = "Joe";
$arr['last_name'] = "Bloggs";

目前,我可以做到:

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

这种写法效率不高,因为我需要调用两次explode函数。

或者我可以这样做:

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

但我想知道是否有更直接的方法。非常感谢。
3个回答

23

我会这样使用array_combine:

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

编辑:我会选择这种方法而不是使用list(),因为它允许您添加字段,而无需使列表()调用过长。


10

你可以使用 list PHP 手册Demo):

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

$arr的值为:

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

感谢您的回答和演示。 - Joe

7

在 PHP <= 5.3 版本中,无法使用 explode(" ", $str)[0]

但是,您可以使用以下方式实现:

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

感谢您的回答并警告“explode(”“,$ str)[0]”。 - Joe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接