交换 2 个单词元素数组中单词的位置

问题描述 投票:0回答:6

我们有带有名称的数组:

[
    'Robin Hood',
    'Little John',
    'Maid Marion',
    'Friar Tuck',
    'Will Scarlet'
]

每个项目中的第一个单词应移至该项目的末尾。

我们应该得到这个:

[
    'Hood Robin',
    'John Little',
    'Marion Maid',
    'Tuck Friar',
    'Scarlet Will'
]
php arrays foreach swap cpu-word
6个回答
5
投票

如果只需要移动第一个空白之前的部分(在

$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
)

3
投票
foreach($names as $key => $name)
{
    $splitted = explode(' ', $name, 2);
    $names[$key] = $splitted[1].' '.$splitted[0];
}

3
投票

这不是一个特别迷人的解决方案:

foreach( $person_array as $key => $value){

$reversed_person_array[]=implode(' ', array_reverse(explode(' ', $value,2)));

}

1
投票

遍历数组,使用 explode 在“ ”(空格)处分割条目,然后使用 array_shift 剪切并获取第一个元素,array_push 将其推到末尾,并再次 implode 整个元素与 ' '(空格)。


0
投票

哈!太棒了,艾哈迈德!

我正在做类似的事情......必须

$first = $array[0];
array_shift($array);
array_push($array, $first);

然后我刷新了页面,看到了你的。干净整洁!


0
投票

您不需要执行任何迭代函数调用或过程,只需在输入数组上使用

preg_replace()
,单独捕获单词,然后将它们交换到替换字符串中即可。

代码:(演示

var_export(
    preg_replace('/(\S+) (\S+)/', '$2 $1', $array)
);
© www.soinside.com 2019 - 2024. All rights reserved.