我有一個名爲SURNAME NAME的數組作爲值。我需要反轉,得到NAME SURNAME。我一直在看看PHP的功能,但找不到有用的。謝謝!發送第一個字到最後一個位置在陣列中
$name = array('SMITH JOHN', 'BACON KEVIN', 'MERCURY FREDDIE');
我有一個名爲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) ;
正如揚指出,字符串分析是去(取單串並分析零件組成新的字符串),但只是被警告的方式一般來說,您需要對名稱進行假設才能正確執行此操作。
如果你是保證只有LAST FIRST
條目,你很好。
但例如,怎麼樣的名字,像
HENRY VAN WINKLE
MADONNA
CATHERINE ZETA-JONES
ROBERT DOWNEY JR.
MR. T
有些情況下是明確的,但有些則沒有。
這應該工作:
$names = preg_replace('/^(\S+)\s+(\S+)$/', '\2 \1', $names);
編輯:是的,它的工作原理just fine。
請注意,這隻適用於兩部分名稱。如果它有兩個以上的部分(例如中間名,後綴),它將保持原樣。
$name = array('SMITH JOHN', 'BACON KEVIN', 'MERCURY FREDDIE');
array_walk(
$name,
function (&$value) {
$value = implode(' ',array_reverse(explode(' ',$value)));
}
);
而你在名單中沒有任何「威廉亨利蓋茨三世」(或類似的)? – mzedeler