Pregunta

He escrito lo que pensé que era un uso muy simple de la función phcode explode () para dividir un nombre en nombre y apellido:

// split name into first and last
$split = explode(' ', $fullname, 2);
$first = $split[0];
$last = $split[1];

Sin embargo, esto está generando un error de php con el mensaje " Desplazamiento indefinido: 1 " . La función todavía parece funcionar, pero me gustaría aclarar lo que esté causando el error. He revisado el manual de php pero sus ejemplos utilizan la misma sintaxis que encima. Creo que entiendo lo que es un desplazamiento indefinido, ¡pero no puedo ver por qué mi código está generando el error!

¿Fue útil?

Solución

esto se debe a que su nombre completo no contiene un espacio. Puedes usar un simple truco para asegurarte de que el espacio esté siempre donde

 $split = explode(' ', "$fullname ");

(note el espacio dentro de las comillas)

Por cierto, puedes usar la función list () para simplificar tu código

  list($first, $last) = explode(' ', "$fullname ");

Otros consejos

Esto podría deberse al hecho de que $ fullname no contenía un carácter de espacio.

Este ejemplo debería solucionar su problema sin este aviso:

$split = explode(' ', $fullname, 2);
$first = @$split[0];
$last = @$split[1];

Ahora, si $ fullname es " musoNic80 " no recibirá un mensaje de aviso.

Tenga en cuenta el uso de los caracteres " @ " .

HTH Elias

Por cierto, ese algoritmo no funcionará todo el tiempo. Piense en nombres de apellidos latinos o italianos de dos palabras como "De Castro", "Cruz Cruz", "La Rosa", etc. La división devolverá 3 en lugar de 2 palabras:

Array {
  [0] => 'Pedro'
  [1] => 'De'
  [1] => 'Castro'
}

Terminarás con mensajes como " Bienvenido de nuevo Ana De " o " Edición del perfil de Monsour La " ;.

Lo mismo ocurrirá con los nombres de dos palabras como "Anne Marie Miller", "William Howard Taft", etc.

Sólo un consejo.

Es de suponer que cualquiera que sea $ fullname no contiene un espacio, por lo que $ split es una matriz que contiene un solo elemento, por lo que $ split [1] se refiere a un desplazamiento indefinido.

Eso es extraño, está funcionando correctamente aquí. Cuando intento con una cadena el gato camina y también solo el funcionará y no producirá un error. Lo he enviado con print_r

¿Cómo se ve tu $ fullname cuando recibes el error?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top