неопределенное смещение при использовании 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 ");
(обратите внимание на пробел внутри кавычек)
Кстати, вы можете использовать функцию list (), чтобы упростить ваш код
list($first, $last) = explode(' ', "$fullname ");
Другие советы
Это может быть связано с тем, что $fullname
не содержал символа пробела.
Этот пример должен устранить вашу проблему без отображения этого уведомления:
$split = explode(' ', $fullname, 2);
$first = @$split[0];
$last = @$split[1];
Теперь , если $fullname
является "musoNic80"
вы не получите сообщение с уведомлением.
Обратите внимание на использование "@"
Персонажи.
HTH Элиас
Кстати, этот алгоритм не будет работать все время. Подумайте о двухсловных именах латинских или итальянских фамилий, таких как «De Castro», «Dela Cruz», «La Rosa» и т. Д. Split вернет 3 вместо 2 слов:
Array {
[0] => 'Pedro'
[1] => 'De'
[1] => 'Castro'
}
В результате вы получите такие сообщения, как " Добро пожаловать, Ана Де " или "Редактирование профиля Monsour La".
То же самое произойдет с именами из двух слов, такими как «Анна Мари Миллер», «Уильям Ховард Тафт» и т. д.
Просто совет.
Предположительно, независимо от того, что $ fullname
не содержит пробелов, $ split
является массивом, содержащим один элемент, поэтому $ split [1]
относится к неопределенному смещению.
Это странно, здесь все работает правильно. Когда я пытаюсь использовать строку , кошка ходит
, а также просто , то
будет работать и не выдаст ошибку. Я вывел его с помощью print_r
Как выглядит ваше $ fullname
при появлении ошибки?