undefined offset при использовании php explode ()

Я написал то, что, как я думал, очень просто использовал функцию 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 когда вы получаете ошибку?