Переместить первое слово в конец - PullRequest
3 голосов
/ 22 ноября 2010

У нас есть массив с именами:

array(
Robin Hood,
Little John,
Maid Marion,
Friar Tuck,
Will Scarlet
)

Первое слово внутри каждого элемента должно быть перенесено в конец этого элемента.

Мы должны получить это:

array(
Hood Robin,
John Little,
Marion Maid,
Tuck Friar,
Scarlet Will
)

Как мы можем это сделать?

Лучше, если мы используем foreach()

Спасибо.

Ответы [ 5 ]

5 голосов
/ 22 ноября 2010

Если , вам нужно только переместить деталь перед первым пробелом (установка $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 голосов
/ 22 ноября 2010
foreach($names as $key => $name)
{
    $splitted = explode(' ', $name, 2);
    $names[$key] = $splitted[1].' '.$splitted[0];
}
3 голосов
/ 22 ноября 2010

Не особенно гламурное решение:

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

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

}
1 голос
/ 22 ноября 2010

пройдитесь по массиву, используйте explode , чтобы разделить запись в '' (пробел), затем используйте array_shift , чтобы вырезать и получить первый элемент, array_push до конца и взрыва все снова с помощью '' (пробел).

0 голосов
/ 22 ноября 2010

Ха! это здорово Ахмет!

Я работал над чем-то похожим ... получил

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

тогда я обновил страницу и увидел вашу. Чисто и аккуратно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...