Я написал то, что, как я думал, очень просто использовал функцию php explode()
для разделения имени на имя и фамилию:
// split name into first and last $split = explode(' ', $fullname, 2); $first = $split[0]; $last = $split[1];
Однако это вызывает ошибку php с сообщением "Undefined offset: 1"
. Функция все еще работает, но я хотел бы прояснить все, что вызывает ошибку. Я проверил руководство по php, но их примеры используют тот же синтаксис, что и выше. Я думаю, что понимаю, что такое неопределенное смещение, но я не понимаю, почему мой код генерирует ошибку!
это потому, что ваше полное имя не содержит пробела. Вы можете использовать простой трюк, чтобы убедиться, что пространство всегда там
$split = explode(' ', "$fullname ");
(обратите внимание на пробел внутри кавычек)
BTW, вы можете использовать функцию list () для упрощения кода
list($first, $last) = explode(' ', "$fullname ");
Это может быть связано с тем, что $fullname
не содержало пробельного символа.
Этот пример должен исправить вашу проблему без отображения этого уведомления:
$split = explode(' ', $fullname, 2); $first = @$split[0]; $last = @$split[1];
Теперь, если $fullname
является "musoNic80"
вы не получите сообщение с уведомлением.
Обратите внимание на использование символов "@"
.
HTH Elias
Кстати, этот алгоритм не будет работать все время. Подумайте о двух словах Latina или итальянских фамилий, таких как «De Castro», «Dela Cruz», «La Rosa» и т. Д. Split вернет 3 вместо двух слов:
Array { [0] => 'Pedro' [1] => 'De' [1] => 'Castro' }
Вы получите сообщения типа «Добро пожаловать назад Ana De» или «Редактирование профиля Monsour La».
То же самое произойдет для двухсловных имен, таких как «Anne Marie Miller», «William Howard Taft» и т. Д.
Просто подсказка.
Предположительно, любое $fullname
не содержит пробела, поэтому $split
– это массив, содержащий один элемент, поэтому $split[1]
ссылается на неопределенное смещение.
«Это странно, здесь все работает правильно. Когда я пытаюсь со строкой, the cat walks
а также просто делает, а не создает ошибку. Я вывел его с помощью print_r
Как выглядит ваше $fullname
когда вы получаете ошибку?