2013-06-20 38 views
2

我有一個名爲SURNAME NAME的數組作爲值。我需要反轉,得到NAME SURNAME。我一直在看看PHP的功能,但找不到有用的。謝謝!發送第一個字到最後一個位置在陣列中

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

而你在名單中沒有任何「威廉亨利蓋茨三世」(或類似的)? – mzedeler

回答

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) ; 
0

正如揚指出,字符串分析是去(取單串並分析零件組成新的字符串),但只是被警告的方式一般來說,您需要對名稱進行假設才能正確執行此操作。

如果你是保證只有LAST FIRST條目,你很好。

但例如,怎麼樣的名字,像

HENRY VAN WINKLE 
MADONNA 
CATHERINE ZETA-JONES 
ROBERT DOWNEY JR. 
MR. T 

有些情況下是明確的,但有些則沒有。

1

這應該工作:

$names = preg_replace('/^(\S+)\s+(\S+)$/', '\2 \1', $names); 

編輯:是的,它的工作原理just fine

請注意,這隻適用於兩部分名稱。如果它有兩個以上的部分(例如中間名,後綴),它將保持原樣。

1
$name = array('SMITH JOHN', 'BACON KEVIN', 'MERCURY FREDDIE'); 
array_walk(
    $name, 
    function (&$value) { 
     $value = implode(' ',array_reverse(explode(' ',$value))); 
    } 
); 
相關問題