Frage

Ich habe geschrieben, was ich dachte, war eine sehr einfache Verwendung der PHP-Funktion explode() einen Namen in Vor- und Nachnamen aufteilen:

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

Dies ist jedoch wirft einen PHP-Fehler mit der Meldung "Undefined offset: 1" auf. Die Funktion scheint noch zu funktionieren, aber ich möchte klären, was den Fehler verursacht. Ich habe die PHP Manual überprüft, aber ihre Beispiele verwenden die gleiche Syntax wie über. Ich glaube, ich verstehe, was ein Offset nicht definiert ist, aber ich kann nicht sehen, warum mein Code, um den Fehler generiert!

War es hilfreich?

Lösung

Dies ist, weil Ihr Fullname keine Leerzeichen enthält. Sie können einen einfachen Trick verwenden, um den Raum stellen Sie sicher, ist immer da, wo

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

(beachten Sie das Leerzeichen innerhalb der Anführungszeichen)

BTW, können Sie Liste () Funktion, um Ihren Code zu vereinfachen

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

Andere Tipps

Dies aufgrund der Tatsache, könnte sein, dass $fullname keine Leerzeichen enthalten hat.

Dieses Beispiel sollte Ihr Problem beheben w / o diesen Hinweis angezeigt wird:

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

Nun, wenn $fullname ist "musoNic80" Sie keine Hinweismeldung erhalten.

Beachten Sie die Verwendung von "@" Zeichen.

HTH Elias

BTW, wird dieser Algorithmus nicht die ganze Zeit arbeiten. Denken Sie über Zwei-Wort-Latina oder italienischen Nachnamen Namen wie "De Castro", "Dela Cruz", "La Rosa" usw. Split wird wieder 3 statt 2 Wörter:

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

Sie werden mit Nachrichten wie „Willkommen zurück Ana De“ oder „Profil bearbeiten von Monsour La“ enden.

Das Gleiche gilt für Zwei-Wort-Namen wie "Anne Marie Miller", "William Howard Taft", etc passieren.

Nur ein Tipp.

Vermutlich was $fullname ist kein Raum enthält, so $split ist ein Array ein einzelnes Element enthält, so $split[1] bezieht sich auf eine Offset-undefiniert.

Das ist seltsam, es funktioniert hier richtig. Wenn ich mit einem String the cat walks versuchen und auch wird nur the tun und kein Fehler erzeugen. Ich habe es mit print_r ausgegeben

Was ist Ihr $fullname aussieht, wenn Sie den Fehler?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top