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

发布于 2024-10-03 22:02:14 字数 308 浏览 9 评论 0 原文

我们有带有名称的数组:

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

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

我们应该得到这个:

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

We have array with names:

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

First word inside each item should be moved to the end of this item.

We should get this:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

回眸一笑 2024-10-10 22:02:15

哈!太棒了,艾哈迈德!

我正在做类似的事情......然后

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

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

Ha! that's great Ahmet!

I was working on something similar... got to

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

then I refreshed the page and saw yours. Clean and neat!

云之铃。 2024-10-10 22:02:15

您不需要执行任何迭代函数调用或过程,只需在输入数组上使用 preg_replace() ,单独捕获单词,然后将它们交换到替换字符串中。

代码:(演示)

var_export(
    preg_replace('/(\S+) (\S+)/', '$2 $1', $array)
);

You don't need to perform any iterated function calls or processes, just use preg_replace() on the input array, capture the words individually, then swap them in the replacement string.

Code: (Demo)

var_export(
    preg_replace('/(\S+) (\S+)/', '$2 $1', $array)
);
暮年慕年 2024-10-10 22:02:14

如果您只需要移动第一个空格之前的部分(在 $limit = 2 rel="nofollow noreferrer">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
)

If you only need to move the part before the first whitespace (setting $limit = 2 in explode() to get two parts only):

function func($n) {
        list($first, $rest) = explode(' ', $n, 2);
        return $rest . ' ' . $first;
} 
$trans = array_map('func', $names);

(Demo)

Gives:

Array
(
    [0] => Hood Robin
    [1] => John Little
    [2] => Marion Maid
    [3] => Tuck Friar
    [4] => Scarlet Will
    [5] => Fitzgerald Kennedy John
)
感情旳空白 2024-10-10 22:02:14
foreach($names as $key => $name)
{
    $splitted = explode(' ', $name, 2);
    $names[$key] = $splitted[1].' '.$splitted[0];
}
foreach($names as $key => $name)
{
    $splitted = explode(' ', $name, 2);
    $names[$key] = $splitted[1].' '.$splitted[0];
}
捎一片雪花 2024-10-10 22:02:14

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

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

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

}

Not a particularly glamorous solution:

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

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

}
夏有森光若流苏 2024-10-10 22:02:14

遍历数组,使用 explode 在 ' '(空格),然后使用 array_shift 剪切并获取第一个元素, array_push 到最后,使用' '(空格)再次内爆整个事情。

walk through you array, use explode to split the entry at ' '(space), then use array_shift to cut of and get the first element, array_push it to the end and implode the whole thing again with ' '(space).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文