Как новичок в php, я нахожусь в ситуации, когда я должен поменять местами следующие строки:
Код работает, но он выглядит немного сложным для такой функции.
$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));
Есть ли у вас идеи о чем-то более простом?
Вы можете 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(' ');
Других решений пока нет …