我有一个以 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);
编辑:是的,它工作得很好。
请注意,这仅适用于两部分名称。如果它有两个以上的部分(例如中间名、后缀),它将保持原样。
$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
有些情况是清楚的,但有些情况不是。