在php中动态地连接第一个和最后一个之间的数组元素

时间:2014-04-08 18:48:49

标签: php

我在互联网上搜索但我找不到解决方案,我有一个字符串,其中包含工作人员的姓名(二,三,......)。 我想从这个字符串中提取first name, middle names and last name

示例字符串

$name = "Michael O. A. Ndanshau";
I am using explode function to get the names

$exp =explode(" ",$name);
print_r($exp);

 array output
Array
(
    [0] => Michael
    [1] => O.
    [2] => A.
    [3] => Ndanshau
)

from above array i can get the first name and last name
$fname = $exp[0];
$lname = end($exp);

我不确定如何获得中间名,因为它可能是动态的。

我的目标是将第一个元素和最后一个元素之间的内容连接为中间名

if a have n elements in the array
$middename = $exp[1]+..$exp[n-1];

有什么帮助吗?

3 个答案:

答案 0 :(得分:1)

也许是这样的。 array_shiftarray_pop修改数组,所以剩下的就是中间名的元素:

$fname = array_shift($exp);
$lname = array_pop($exp);
middlename = implode(' ', $exp);

但您可能需要检查以确保预先存在超过2个元素,或至少剩余1个元素:

$fname = array_shift($exp);
$lname = array_pop($exp);

if(count($exp) >= 1) {
    middlename = implode(' ', $exp);
}

或类似的东西。

答案 1 :(得分:1)

获取数组的第一个元素以获取名字和最后一个元素以获取姓氏。获取中间名之间的所有内容:

$firstname  = $parts[0];
$middlename = implode(array_slice($parts, 1, -1));
$lastname   = end($parts);

var_dump($firstname, $middlename, $lastname);

输出:

string(7) "Michael"
string(4) "O.A."
string(8) "Ndanshau"

Demo

答案 2 :(得分:1)

if(count($arr)>2) {
    $middleName = implode(' ',array_slice($arr,1,count($arr)-2));
}
else {
   $middleName = '';
}