Question

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 "quotation non définie: 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 au dessus de. Je pense comprendre ce qu'est un décalage non défini, mais je ne vois pas pourquoi mon code génère l'erreur!

Était-ce utile?

La solution

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à 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 ");

Autres conseils

Cela peut être dû au fait que $ nom complet ne contient pas de caractère d'espacement.

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 $ nom complet est "musoNic80" , vous ne recevrez pas de message de notification.

Notez l'utilisation de caractères "@" et .

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. Split renverra 3 mots au lieu de 2:

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

Vous obtiendrez des messages tels que "Bienvenue à nouveau Ana De". ou "Profil d'édition de Monsour La".

La même chose se produira pour des noms de deux mots tels que "Anne Marie Miller", "William Howard Taft", etc.

Juste un conseil.

Vraisemblablement, quel que soit le $ nom complet , il 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 , le chat marche et aussi le fera l'affaire et ne produira pas d'erreur. Je l'ai sorti avec print_r

À quoi ressemble votre $ nom complet lorsque vous obtenez l'erreur?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top