将第一个单词发送到数组中的最后位置

时间:2013-06-20 17:10:38

标签: php arrays

我有一个SURNAME NAME数组作为值。我需要反转它,得到NAME SURNAME作为结果。我一直在看看PHP函数,但找不到有用的函数。谢谢!

$name = array('SMITH JOHN', 'BACON KEVIN', 'MERCURY FREDDIE');

4 个答案:

答案 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

有些案例很清楚,但其他案例则不然。