SURNAME NAME を値として持つ配列があります。それを逆にして、結果として NAME SURNAME を取得する必要があります。私はphp関数を見てきましたが、便利なものを見つけることができませんでした. ありがとうございました!
$name = array('SMITH JOHN', 'BACON KEVIN', 'MERCURY FREDDIE');
このコードを試してください:
$names = array('SMITH JOHN', 'BACON KEVIN', 'MERCURY FREDDIE');
foreach ($names as &$full_name){ //Remember here to pass by reference &
$parts = explode(" ", $full_name);
$full_name = "{$parts[1]} {$parts[0]}" ;
}
var_dump($names) ;
これはうまくいくはずです:
$names = preg_replace('/^(\S+)\s+(\S+)$/', '\2 \1', $names);
編集:はい、うまくいきます。
これは 2 部構成の名前に対してのみ機能することに注意してください。2 つ以上の部分 (例: ミドル ネーム、接尾辞) がある場合、そのまま残ります。
$name = array('SMITH JOHN', 'BACON KEVIN', 'MERCURY FREDDIE');
array_walk(
$name,
function (&$value) {
$value = implode(' ',array_reverse(explode(' ',$value)));
}
);
Jan が指摘したように、文字列の解析が進むべき道です (個々の文字列を取得し、部分を解析して新しい文字列を作成します) が、これを正しく行うには名前について仮定を立てる必要があることに注意してください。
エントリのみが保証されている場合は、問題ありません。LAST FIRST
しかし、たとえば、次のような名前はどうでしょうか
HENRY VAN WINKLE
MADONNA
CATHERINE ZETA-JONES
ROBERT DOWNEY JR.
MR. T
明確なケースもあれば、そうでないケースもあります。