undefined Offset, wenn PHP explodieren () verwendet
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!
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?