array_slice, взорвать, взорвать, считать, просто перестановка строк?

Как новичок в php, я нахожусь в ситуации, когда я должен поменять местами следующие строки:

  1. «имя второе имя» как «имя второе имя»,
  2. «secondname1 secondname2 firstname» как «firstname secondname1 secondname2»

Код работает, но он выглядит немного сложным для такой функции.

$name = "secondname1 secondname2 firstname";
$split = explode(" ", $name);

$last = count($split);
$firstname = $split[$last -1];
$secondnames = implode(" ",array_slice($split,-$last, $last-1));

echo implode(" ",array($firstname, $secondnames));

Есть ли у вас идеи о чем-то более простом?

1

Решение

Вы можете pop последний элемент от конца массива, а затем unshift Вернемся к началу:

function last_word_first($name) {
$x = explode(' ', $name);
array_unshift($x, array_pop($x));
return implode(' ', $x);
}

echo last_word_first("secondname firstname"), "\n";
echo last_word_first("secondname1 secondname2 firstname"), "\n";

Другим вариантом является регулярное выражение:

function last_word_first($name) {
return preg_replace('~(.+)\s+(\S+)$~', "$2 $1", $name);
}

Что касается саморекламы, у меня есть библиотека, которая может сделать это так:

$x = str($name)->split();
print $x[':-1']->prepend($x[-1])->join(' ');
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]