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!

È stato utile?

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?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top