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!

Foi útil?

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?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top