如何从名字和姓氏的数组创建一个新的名字数组?

时间:2010-11-27 08:14:31

标签: php arrays

嘿所有人。我需要从另一个名字和姓氏数组创建一个名字数组。所以基本上具有名字和姓氏的原始数组看起来像这样:

原始数组

array("John Doe", "Jane Doe", "John Darling", "Jane Darling");

我需要创建的数组是:

新数组

array("John", "Jane", "John", "Jane");

所以我想我需要删除空间后面的任何值。如果有人可以指出我正确的方向使用正则表达式或一些很棒的数组函数。

干杯!

更新: 谢谢大家的答案。

3 个答案:

答案 0 :(得分:2)

您可以创建一个回调函数来删除姓氏,并将其映射到数组,就像这样(我使用不同的方法而不是explode(),两者都是同样有效的方法):

function strip_last_name($name) {
    if (($pos = strpos($name, ' ')) !== false) {
        // If there is at least one space present, assume 'first<space>last'
        return substr($name, 0, $pos);
    } else {
        // Otherwise assume first name only
        return $name;
    }
}

$first_names = array_map('strip_last_name', $full_names);

这会保留数组键和元素的顺序。

答案 1 :(得分:0)

这应该可以做到这一点,如果它不应该,我真的很抱歉,但今晚没有睡觉:P,但你会得到这个想法;)

<?php
    $secondarray=array();
    foreach($firstarray as $fullname){
        $s=explode(' ',$fullname);
        $secondarray[]=$s[0];
    }
?>

答案 2 :(得分:0)

$array1 = array("John Doe", "Jane Doe", "John Darling", "Jane Darling");
$array2 = array();
foreach ($array1 as $name) {
    $firstname = explode(' ',$name);
    $array2[] = $firstname[0];
}

explode函数按分隔符拆分字符串,例如explode('b','aaaaabccccc')返回array('aaaaa','ccccc')。上面的代码使用foreck循环将每个全名拆分为包含名字和姓氏的数组,然后将第一个名称添加到数组中,就像第一个名称一样。