如何在第一个索引后获取数组的值?

时间:2013-05-30 04:13:01

标签: php arrays implode

我有一个数组,其中包含全名。我知道如何显示基本上位于第一个索引中的姓氏。如何在姓氏后显示其余值?

$fullname = array('fullname' => 'POTTER Harry James');
$res = implode("", $fullname);
$name = preg_split("/[\s,]+/", $res);
$lname = $name[0];

我在名字中做了什么:

$fname = $name[1]. " ".$name[2];

它工作正常,但有更清洁的方法吗?我的意思是,如果用户有超过2个名字怎么办?

感谢。

5 个答案:

答案 0 :(得分:3)

我建议使用explode()功能:

<?php
$fullname = array('fullname' => 'POTTER Harry James');
$parts    = explode(' ', $fullname['fullname']);

var_dump($parts);
?>

节目:

array(3) {
  [0]=>
  string(6) "POTTER"
  [1]=>
  string(5) "Harry"
  [2]=>
  string(5) "James"
}

您可以以某种方式使用$parts的任何部分。

<?php
$a = array_shift($parts);
$b = implode(' ', $parts);

echo "{$b} ({$a})"; // Harry James (POTTER)
?>

UPDv1:

在您当前的代码中,您可能会做同样的事情:

<?php
$lname = array_shift($name);
$fname = implode(' ', $name);
?>

答案 1 :(得分:2)

我认为你应该首先从数组中取出姓氏,然后使用循环将剩余的名称连接为第一名。

$fullname = array('fullname' => 'POTTER Harry James');
$res = implode("", $fullname);

$name = preg_split("/[\s,]+/", $res);

$lname = array_shift($name);

$fname = "";

foreach($name as $fnames)
    $fname.= " ".$fnames;

答案 2 :(得分:1)

$fullname = array('fullname' => 'POTTER Harry James');
$firstNames = strstr($fullname['fullname'], ' '); // $firstNames='Harry James'

这会在第一个空格字符之后获得字符串

答案 3 :(得分:0)

你可以做到

<?php
$fullname = array('fullname' => 'POTTER Harry James');
list($lname,$fname) = explode(" ", $fullname["fullname"],2);
echo $fname."<br>".$lname;
?>

如果名称包含2个或更多单词,则此功能将起作用。如果有超过2个单词,那么除了第一个单词之外的任何内容都将被视为名字,第一个单词将被视为姓氏。

答案 4 :(得分:0)

这是一项不可能完成的任务。如果留给他们自己的设备,用户将把各种各样的东西放在一个字段中。

如果你关心分离用户的名字和姓氏,你应该单独询问它们,因为没有正则表达式可能决定分解他们名字的正确方法。