我有一个SURNAME NAME数组作为值。我需要反转它,得到NAME SURNAME作为结果。我一直在看看PHP函数,但找不到有用的函数。谢谢!
$name = array('SMITH JOHN', 'BACON KEVIN', 'MERCURY FREDDIE');
答案 0 :(得分:4)
试试这段代码:
$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) ;
答案 1 :(得分:1)
这应该有效:
$names = preg_replace('/^(\S+)\s+(\S+)$/', '\2 \1', $names);
编辑:是的,它有效just fine。
请注意,这仅适用于由两部分组成的名称。如果它有两个以上的部分(例如中间名,后缀),它将保持原样。
答案 2 :(得分:1)
$name = array('SMITH JOHN', 'BACON KEVIN', 'MERCURY FREDDIE');
array_walk(
$name,
function (&$value) {
$value = implode(' ',array_reverse(explode(' ',$value)));
}
);
答案 3 :(得分:0)
正如Jan指出的那样,字符串解析是可行的方法(获取单个字符串并解析部分以组成新字符串)但是通常需要警告您需要对名称进行假设才能正确执行此操作
如果您保证只有LAST FIRST
个条目,那么您没问题。
但是,例如,像
这样的名字呢HENRY VAN WINKLE
MADONNA
CATHERINE ZETA-JONES
ROBERT DOWNEY JR.
MR. T
有些案例很清楚,但其他案例则不然。