indefinida compensados ??quando usando PHP explode ()
Pergunta
Eu escrevi o que eu achava que era um uso muito simples da função php explode()
para dividir um nome em nome próprio e apelido:
// split name into first and last
$split = explode(' ', $fullname, 2);
$first = $split[0];
$last = $split[1];
No entanto, isso está jogando um erro php com o "Undefined offset: 1"
mensagem. A função ainda parece trabalho, mas eu gostaria de esclarecer o que está causando o erro. Eu verifiquei o manual php mas os seus exemplos usam a mesma sintaxe acima.
Eu acho que entendo o que é um indeterminado offset é, mas eu não posso ver por que meu código está gerando o erro!
Solução
Isto porque o seu nome completo não contém um espaço. Você pode usar um truque simples para garantir que o espaço é sempre onde
$split = explode(' ', "$fullname ");
(note o espaço dentro das aspas)
BTW, você pode usar list () função para simplificar o seu código
list($first, $last) = explode(' ', "$fullname ");
Outras dicas
Isto pode ser devido ao fato de que $fullname
não contém um caractere de espaço.
Este exemplo deve resolver o seu problema w / o exibir este aviso:
$split = explode(' ', $fullname, 2);
$first = @$split[0];
$last = @$split[1];
Agora, se $fullname
é "musoNic80"
você não vai obter uma mensagem de aviso.
Observe o uso de caracteres "@"
.
HTH Elias
BTW, que o algoritmo não vai funcionar o tempo todo. Pense em duas palavras sobrenomes Latina ou italiano nomes como "De Castro", "Dela Cruz", "La Rosa", etc. Dividir retornará 3 em vez de 2 palavras:
Array {
[0] => 'Pedro'
[1] => 'De'
[1] => 'Castro'
}
Você vai acabar com mensagens como "Bem-vindo de volta Ana De" ou "Editar Perfil de Monsour La".
A mesma coisa vai acontecer para os nomes de duas palavras como "Anne Marie Miller", "William Howard Taft", etc.
Apenas uma dica.
Presumivelmente, o que quer $fullname
é não contém um espaço, de modo $split
é uma matriz que contém um único elemento, de modo $split[1]
refere-se a um deslocamento indefinido.
Isso é estranho, ele está trabalhando correto aqui. Quando eu tento com um the cat walks
corda e também apenas the
vai fazer e não produzirá um erro. Eu já emitidas com print_r
O que é o seu $fullname
parece quando você obter o erro?