我们有带有名称的数组:
[
'Robin Hood',
'Little John',
'Maid Marion',
'Friar Tuck',
'Will Scarlet'
]
每个项目中的第一个单词应移至该项目的末尾。
我们应该得到这个:
[
'Hood Robin',
'John Little',
'Marion Maid',
'Tuck Friar',
'Scarlet Will'
]
如果只需要移动第一个空白之前的部分(在
$limit = 2
中设置
explode()
即可仅获得两个部分):
function func($n) {
list($first, $rest) = explode(' ', $n, 2);
return $rest . ' ' . $first;
}
$trans = array_map('func', $names);
(演示)
给予:
Array
(
[0] => Hood Robin
[1] => John Little
[2] => Marion Maid
[3] => Tuck Friar
[4] => Scarlet Will
[5] => Fitzgerald Kennedy John
)
foreach($names as $key => $name)
{
$splitted = explode(' ', $name, 2);
$names[$key] = $splitted[1].' '.$splitted[0];
}
这不是一个特别迷人的解决方案:
foreach( $person_array as $key => $value){
$reversed_person_array[]=implode(' ', array_reverse(explode(' ', $value,2)));
}
遍历数组,使用 explode 在“ ”(空格)处分割条目,然后使用 array_shift 剪切并获取第一个元素,array_push 将其推到末尾,并再次 implode 整个元素与 ' '(空格)。
哈!太棒了,艾哈迈德!
我正在做类似的事情......必须
$first = $array[0];
array_shift($array);
array_push($array, $first);
然后我刷新了页面,看到了你的。干净整洁!
您不需要执行任何迭代函数调用或过程,只需在输入数组上使用
preg_replace()
,单独捕获单词,然后将它们交换到替换字符串中即可。
代码:(演示)
var_export(
preg_replace('/(\S+) (\S+)/', '$2 $1', $array)
);