1

フルネームを含む配列があります。基本的に最初のインデックスにある姓を表示する方法を知っています。姓の後に残りの値を表示するにはどうすればよいですか?

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

私がファーストネームでしたこと:

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

正常に動作しますが、それを行うためのよりクリーンな方法はありますか? つまり、ユーザーが 2 つ以上の名前を持っている場合はどうなるでしょうか?

ありがとう。

4

5 に答える 5

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);
?>
于 2013-05-30T04:16:39.540 に答える
2

最初に配列から姓を取り出してから、ループを使用して残りの名前を 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;
于 2013-05-30T04:36:07.843 に答える
1
$fullname = array('fullname' => 'POTTER Harry James');
$firstNames = strstr($fullname['fullname'], ' '); // $firstNames='Harry James'

これは、最初の空白文字の後の文字列を取得します。

于 2013-05-30T04:29:10.097 に答える
0

あなたができる

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

これは、名前に 2 語以上が含まれている場合に機能します。2 つ以上の単語がある場合、最初の単語以外は名と見なされ、最初の単語は姓と見なされます。

于 2013-05-30T04:26:15.410 に答える
0

これは少し不可能な作業です。自分のデバイスに任せると、ユーザーはあらゆる種類のものを 1 つのフィールドに入れることになります。

ユーザーの姓と名を分けたい場合は、名前を分割する正しい方法を決定できる正規表現がないため、別々に尋ねる必要があります。

于 2013-05-30T04:26:19.340 に答える