J'ai écrit ce que je pensais être une utilisation très simple de la fonction php explode()
pour diviser un nom en prénom et nom:
// split name into first and last
$split = explode(' ', $fullname, 2);
$first = $split[0];
$last = $split[1];
Cependant, cela génère une erreur php avec le message "Undefined offset: 1"
. La fonction semble toujours fonctionner, mais j'aimerais clarifier la cause de l'erreur. J'ai vérifié le manuel php mais leurs exemples utilisent la même syntaxe que ci-dessus. Je pense comprendre ce qu'est un décalage indéfini, mais je ne vois pas pourquoi mon code génère l'erreur!
c'est parce que votre nom complet ne contient pas d'espace. Vous pouvez utiliser une astuce simple pour vous assurer que l'espace est toujours là
$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 d'espace.
Cet exemple devrait résoudre votre problème sans l'affichage de cette notification:
$split = explode(' ', $fullname, 2);
$first = @$split[0];
$last = @$split[1];
Maintenant, si $fullname
est "musoNic80"
, vous ne recevrez pas de message de notification.
Notez l'utilisation de "@"
caractères.
HTH Elias
BTW, cet algorithme ne fonctionnera pas tout le temps. Pensez à des noms de famille latinos ou italiens à deux mots, tels que "De Castro", "Dela Cruz", "La Rosa", etc.
Array {
[0] => 'Pedro'
[1] => 'De'
[1] => 'Castro'
}
Vous obtiendrez des messages tels que "Welcome back Ana De" ou "Modification du profil de Monsour La".
La même chose se passera pour des noms à deux mots comme "Anne Marie Miller", "William Howard Taft", etc.
Juste un pourboire.
Vraisemblablement, quoi que $fullname
soit ne contient pas d'espace, donc $split
est un tableau contenant un seul élément, donc $split[1]
fait référence à un décalage non défini.
C'est étrange, ça marche bien ici. Quand j'essaie avec une chaîne the cat walks
et aussi juste the
fera et ne produira pas d'erreur Je l'ai sorti avec print_r
À quoi ressemble votre $fullname
lorsque vous obtenez l'erreur?