décalage non défini lors de l'utilisation de php explode()
j'ai écrit ce que je pensais être une utilisation très simple de la fonction php explode()
pour séparer un nom en prénom et nom de famille:
// split name into first and last
$split = explode(' ', $fullname, 2);
$first = $split[0];
$last = $split[1];
cependant, cela provoque une erreur php avec le message "Undefined offset: 1"
. La fonction semble toujours fonctionner, mais j'aimerais clarifier ce qui cause l'erreur. J'ai vérifié le manuel php mais leurs exemples utilisent la même syntaxe que ci-dessus.
Je pense que je comprends ce qu'est un décalage non défini est, mais je ne vois pas pourquoi mon code qui génère l'erreur!
5 réponses
c'est parce que votre nom ne contient pas d'espace. Vous pouvez utiliser un truc simple pour s'assurer que l'espace est toujours là où
$split = explode(' ', "$fullname ");
(notez l'espace entre les guillemets)
BTW, vous pouvez utiliser la fonction list() pour simplifier votre code
list($first, $last) = explode(' ', "$fullname ");
cela pourrait être dû au fait que $fullname
ne contenait pas de caractère d'espace.
cet exemple devrait corriger votre problème sans afficher cet avis:
$split = explode(' ', $fullname, 2);
$first = @$split[0];
$last = @$split[1];
maintenant si $fullname
est "musoNic80"
vous n'obtiendrez pas de message de notification.
noter l'utilisation des caractères "@"
.
HTH Elias
BTW, cet algorithme ne fonctionnera pas tout le temps. Pensez à des noms latins ou italiens comme "de Castro", "Dela Cruz", "La Rosa", etc. Split retournera 3 au lieu de 2 mots:
Array {
[0] => 'Pedro'
[1] => 'De'
[1] => 'Castro'
}
vous finirez avec des messages comme "Welcome back Ana de" ou "profil de montage de Monsour La".
il en sera de même pour les noms à deux mots comme" Anne Marie Miller"," William Howard Taft", etc.
juste un conseil.
vraisemblablement, quoi que $fullname
soit ne contient pas d'espace, donc $split
est un tableau contenant un seul élément, donc $split[1]
se réfère à un décalage non défini.
c'est étrange, ça fonctionne correctement ici. Quand j'essaie avec une chaîne the cat walks
et aussi juste the
fera et ne produira pas une erreur. Je l'ai sorti avec print_r
à quoi ressemble votre $fullname
quand vous avez l'erreur?