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


How to get the value of an array after first index?

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

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

我用名字做的事:

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

它很好用,但有更干净的方法吗?我的意思是,如果用户有两个以上的名字怎么办?

谢谢。

我建议使用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);
?>

我认为应该先从数组中去掉最后一个名称,然后使用循环将剩余的名称连接为fistname。

$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;
$fullname = array('fullname' => 'POTTER Harry James');
$firstNames = strstr($fullname['fullname'], ' '); // $firstNames='Harry James'

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

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

如果你想把用户的名字和姓氏分开,你应该分别询问他们,因为没有正则表达式可以确定正确的方式来分解他们的名字。

您可以进行

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

如果名称包含两个或两个以上的单词,这将起作用。如果有两个以上的单词,则除第一个单词外的任何单词都将被视为名字,第一个单词将被视为由姓氏。