offset indefinito quando si utilizza php explode ()
Domanda
Ho scritto quello che pensavo fosse un uso molto semplice della funzione php explode ()
per dividere un nome in nome e cognome:
// split name into first and last
$split = explode(' ', $fullname, 2);
$first = $split[0];
$last = $split[1];
Tuttavia, questo sta generando un errore php con il messaggio " Undefined offset: 1 "
. La funzione sembra ancora funzionare, ma vorrei chiarire qualunque cosa stia causando l'errore. Ho controllato il manuale php ma i loro esempi usano la stessa sintassi di sopra.
Penso di capire cos'è un offset indefinito, ma non riesco a capire perché il mio codice stia generando l'errore!
Soluzione
questo perché il tuo nome completo non contiene uno spazio. Puoi usare un semplice trucco per assicurarti che lo spazio sia sempre dove
$split = explode(' ', "$fullname ");
(nota lo spazio tra virgolette)
A proposito, puoi usare la funzione list () per semplificare il tuo codice
list($first, $last) = explode(' ', "$fullname ");
Altri suggerimenti
Ciò potrebbe essere dovuto al fatto che $ fullname
non conteneva uno spazio.
Questo esempio dovrebbe risolvere il tuo problema senza visualizzare questo avviso:
$split = explode(' ', $fullname, 2);
$first = @$split[0];
$last = @$split[1];
Ora se $ fullname
è " musoNic80 "
non riceverai un messaggio di avviso.
Nota l'uso dei caratteri " @ "
.
HTH Elias
A proposito, quell'algoritmo non funzionerà sempre. Pensa a cognomi latini di due parole o nomi italiani come " De Castro " ;, " Dela Cruz " ;, " La Rosa " ;, ecc. Split restituirà 3 anziché 2 parole:
Array {
[0] => 'Pedro'
[1] => 'De'
[1] => 'Castro'
}
Ti ritroverai con messaggi come " Bentornato Ana De " o " Modifica profilo di Monsour La " ;.
La stessa cosa accadrà per nomi di due parole come " Anne Marie Miller " ;, " William Howard Taft " ;, ecc.
Solo un suggerimento.
Presumibilmente, qualunque sia $ fullname
non contiene uno spazio, quindi $ split
è un array che contiene un singolo elemento, quindi $ split [1]
si riferisce a un offset indefinito.
Che strano, qui funziona correttamente. Quando provo con una stringa il gatto cammina
e anche solo il
farà e non produrrà un errore. L'ho fornito con print_r
Com'è il tuo $ fullname
quando ricevi l'errore?